Pergunta

Eu estou usando VS2008 e gostaria de criar um tempo de compilação aviso / erro com base em atributos personalizados em uma propriedade (se é possível).

Existem dois casos que me interesse atualmente:

  [MyAttribute (typeof(MyClass)]

Onde MyClass tem que implementar uma interface. Atualmente eu afirmar isso no construtor do atributo, no entanto, isso não o torna fácil de rastrear, devido à natureza do rastreamento de pilha:

 public MyAttribute (Type MyClassType)
    {
         System.Diagnostics.Debug.Assert(typeof(MyInterface).IsAssignableFrom(MyClassType),
                                         "Editor must implement interface: " + typeof(MyInterface).Name);

    }

O segundo caso que me interessa é onde eu tenho um tipo definido em um atributo, se esse tipo implementa uma interface, em seguida, um aviso deve ser exibido se outro atributo não estiver presente.

I.E. if (MyClass.Implements (SomeInterface) &&! Exists (SomeAttibute)) {Gerar Aviso}

[MyAttribute(typeof(MyClass)] 
// Comment next line to generate warning
[Foo ("Bar")]

Obrigado!

Foi útil?

Solução

Você pode fazer isso com PostSharp .

Eu tenho uma vez feito isso, e explicou como fazê-lo aqui

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top