2009-10-02 4 views
3
public class SomeAttr: Attribute 
{ 
    void Method() 
    { 
     //here I want to know the type this instance of attribute is applied to 
    } 
} 

답변

2

일반 .NET의 경우 수동으로 말하지 않는 한 가능하지도 않습니다. 죄송합니다. 속성 생성자/속성에 typeof(Foo)을 포함시켜야합니다. AOP (PostSharp 등)에 말하면, 모든 배팅은 꺼져 있습니다.

TypeDescriptor ([DisplayName], [TypeConverter] 등)이 사용하는 속성의 일부를 의미하는 경우 다른 옵션이있을 수 있지만 구현하기에 다소 구체적이고 사소한 것일 수 있습니다.

+0

마크, AOP로 어떻게 완료되는지 볼 수있는 링크를 줄 수 있습니까? – Dmitry

+0

죄송합니다. PostSharp가 이에 대해 충분히 알지 못합니다. 그러나 그것이 rewriter이기 때문에, 대부분의 것들이 가능합니다. –

2

typeof (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. 
    } 
} 
관련 문제