我使用反射来检索poco类的所有公共属性
poco例如
public class MetaData
{
[ExplicitKey]
public string Id{ get; set; }
public enum DataType
{
T1 = 1,
T2 = 2,
T3 = 3
}
public DataType MyDataType { get; private set; } //<- enum
public string ParentFolder { get; private set; }
public string FileName { get; private set; }
...
使用反射获取所有这些属性似乎总是排除枚举属性:相等
var publicPropertiesUsed = metaData.GetType().GetProperties().Where(x => x.PropertyType.IsPublic);
询问枚举属性时,IsPublic
为false。
通过反思获得所有公共属性的正确途径是什么?
1条答案
按热度按时间ctehm74n1#
DataType
enum
嵌套在MetaData
类中。在这种情况下,IsPublic
返回false
。从
true
,如果Type
被声明为公共类型并且不是嵌套类型;否则为false
。请将
enum
移出MetaData
类别,或使用IsVisible
取代IsPublic
。从
true
,如果当前Type
是公共类型或公共嵌套类型使得所有封闭类型都是公共的;否则为false
。