属性上的自定义属性反射

时间:2018-05-07 01:39:13

标签: c# .net reflection json.net

我有一个基本类,其中包含一个自定义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);

它返回看起来像是原生属性的东西而我的不存在。

所以我的问题是,为什么要这样做?

1 个答案:

答案 0 :(得分:3)

foo.CurrentDate.GetType()将返回typeof(DateTime)。这是因为foo.CurrentDate被声明为DateTimeGetType()返回有关您为其提供的值的类型的信息,而不是有关该值来自的属性的信息。

你的意思是做foo.GetType().GetProperty(nameof(foo.CurrentDate)).GetCustomAttributes()吗?