c# – 使用反射来获取继承接口的类的属性
发布时间:2020-12-16 02:03:34 所属栏目:百科 来源:网络整理
导读:我有以下场景,我想获得实现接口的类的属性,但不包括那些虚拟的属性.为了说清楚,我将给你一个小例子: – 想象一下,我们有以下界面: – public interface IUser{ int UserID { get; set; } string FirstName { get; set; }} 实现此接口的类: – public clas
我有以下场景,我想获得实现接口的类的属性,但不包括那些虚拟的属性.为了说清楚,我将给你一个小例子: –
想象一下,我们有以下界面: – public interface IUser { int UserID { get; set; } string FirstName { get; set; } } 实现此接口的类: – public class User: IUser { public int UserID { get; set; } public string FirstName { get; set; } public virtual int GUID { get; set; } } 现在,我想要做的是获取除了虚拟的类的属性.当类没有实现接口时,以下工作正常: – var entityProperties = typeof(User).GetProperties() .Where(p => p.GetMethod.IsVirtual == false); 但是,当实现接口时,上面的代码行不会返回任何结果.如果我删除’where’它工作正常(但虚拟属性不会被排除),如下所示: var entityProperties = typeof(User).GetProperties(); 有人有任何想法吗?我搜索但是我无法找到任何结果.在此先感谢您的帮助. 解决方法
我怀疑你想要
IsFinal :
所以: var entityProperties = typeof(User).GetProperties() .Where(p => p.GetMethod.IsFinal); 或者可能: var entityProperties = typeof(User).GetProperties() .Where(p => !p.GetMethod.IsVirtual || p.GetMethod.IsFinal); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |