1

有什么方法可以获取我在方法中接收的特定对象的自定义属性?

我不想也不能遍历 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)

}
4

2 回答 2

2

不,对象没有属性——成员有。当您使用“Do”方法时,没有记录表明您调用了 Do(MyObject) 与 Do(MyOtherFieldWhichHasTheSameValue)。

如果您需要查找成员的属性,则基本上必须传入相关的 MemberInfo,而不是它的评估结果。

于 2008-10-15T12:52:15.053 回答
1

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

例子:

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

[Name("Foo")]
class MyClass : MyBase
{
}
于 2008-10-15T12:50:07.787 回答