有没有办法获取我在方法中收到的特定对象的自定义属性?

我不想也不能迭代Type.GetMembers()并搜索我的成员。我有一个对象,它也是一个成员,具有属性。

如何获取属性?

class Custom
{
    [Availability]
    private object MyObject = "Hello";

    private void Do(object o)
    {
        //does object 'o' has any custom attributes of type 'Availability'?
    }

    //somewhere I make the call: Do(MyObject)

}
有帮助吗?

解决方案

没有。对象没有属性 - 成员可以。当你进入“做”时方法,没有记录你调用Do(MyObject)vs Do(MyOtherFieldWhichHasTheSameValue)的事实。

如果你需要在一个成员上查找属性,你基本上必须传递相关的MemberInfo,而不是它要评估的内容。

其他提示

如果没有至少1次反射调用,则无法执行此操作。之后,以某种方式保存该值。

示例:

abstract MyBase
{
  public string Name;
  protected MyBase()
  {
    //look up value of Name attribute and assign to Name
  } 
}

[Name("Foo")]
class MyClass : MyBase
{
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top