我有一个基本类,其中包含一个自定义Attribute
public class Foo
{
[MyAttribute]
public DateTime CurrentDate {get;set;}
}
我使用反射来查看CurrentDate
上是否有MyAttribute
。
我创建了Foo
的新实例:
var foo = new Foo();
我反思foo
:
foo.GetType().GetProperty("CurrentDate").GetCustomAttributes(true);
这给了我自定义属性。
但是,如果我这样反映:
foo.CurrentDate.GetType().GetCustomAttributes(true);
它返回看起来像是原生属性的东西而我的不存在。
所以我的问题是,为什么要这样做?
答案 0 :(得分:3)
foo.CurrentDate.GetType()
将返回typeof(DateTime)
。这是因为foo.CurrentDate
被声明为DateTime
。 GetType()
返回有关您为其提供的值的类型的信息,而不是有关该值来自的属性的信息。
你的意思是做foo.GetType().GetProperty(nameof(foo.CurrentDate)).GetCustomAttributes()
吗?