属性的代码如何知道它应用于哪种类型?

时间:2009-10-02 15:47:57

标签: c# .net attributes

public class SomeAttr: Attribute
{
    void Method()
    {
        //here I want to know the type this instance of attribute is applied to
    }
}

2 个答案:

答案 0 :(得分:2)

在常规.NET中,它不会也不会(除非你手动告诉它);抱歉。您需要在属性构造函数/属性中包含一些typeof(Foo)。如果你正在谈论AOP(PostSharp等),那么所有的赌注都会关闭。

如果您指的是TypeDescriptor[DisplayName][TypeConverter]等)使用的某些属性,那么可能还有其他选项 - 但具体而且非常重要。

答案 1 :(得分:2)

将类型(使用typeof)传递给Attribute构造函数,例如。

class SomeAttr : Attribute
{
    private Type _type;

    public SomeAttr(Type type)
    {
        _type = type;
    }

    private void Method()
    {
        string s = _type.ToString(); // Example usage of type.
    }
}