Как код атрибута может знать, к какому типу он применяется? - PullRequest
3 голосов
/ 02 октября 2009
public class SomeAttr: Attribute
{
    void Method()
    {
        //here I want to know the type this instance of attribute is applied to
    }
}

Ответы [ 2 ]

2 голосов
/ 02 октября 2009

Передайте тип (используя 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.
    }
}
2 голосов
/ 02 октября 2009

В обычном .NET это не так и не может (если вы не скажете это вручную); извиняюсь. Вам нужно будет включить некоторые typeof(Foo) в конструктор / свойства атрибута. Если вы говорите AOP (PostSharp и т. Д.), То все ставки выключены.

Если вы имеете в виду некоторые из атрибутов, используемых TypeDescriptor ([DisplayName], [TypeConverter] и т. Д.), То возможны другие варианты - но довольно специфичные и нетривиальные для реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...