有没有办法获取我在方法中收到的特定对象的自定义属性?
我不想也不能迭代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)
}
答案 0 :(得分:2)
没有。对象没有属性 - 成员可以。当你使用“Do”方法时,没有记录你调用Do(MyObject)vs Do(MyOtherFieldWhichHasTheSameValue)的事实。
如果你需要在一个成员上查找属性,你基本上必须传递相关的MemberInfo,而不是它要评估的内容。
答案 1 :(得分:1)
如果没有至少1次反射调用,则无法执行此操作。之后,以某种方式保存该值。
示例:
abstract MyBase
{
public string Name;
protected MyBase()
{
//look up value of Name attribute and assign to Name
}
}
[Name("Foo")]
class MyClass : MyBase
{
}