2009-06-10 23 views
24

Escenario: Tengo una clase base "MyBase". que tienen un atributo "MyAttrib" costumbreUso de la fuerza del atributo personalizado

Con eso hago esto:

[MyAttrib(1234)] 
class MyClass : MyBase() 
{ 
MyClass() 
{ 
} 
} 

Pregunta: ¿Puedo en cualquier clase de fuerza de manera inherting MyBase tener la MyAttrib atributo?

Respuesta

25

No, no hay forma de que el compilador requiera un atributo en C#. Usted tiene otras opciones disponibles para usted. Podría escribir una prueba unitaria que refleje todos los tipos en el ensamblaje y verifique el atributo. Pero lamentablemente no hay forma de que el compilador fuerce el uso de un atributo.

+0

Consulte la respuesta a continuación por @ frederik-gheysels – devinbost

2

Lo que hice fue tener una propiedad abstracta o método en la clase MyBase, de modo que la herencia de clases se ven obligados a anular (y así implementar) esta propiedad/método.

No es tan limpio como un atributo, pero es mejor que consultar el tiempo de ejecución en mi opinión.

+0

Creo que esto sería aún más limpio, si se ajusta al caso. –

0

Si desea asegurarse de que todas las clases de un tipo de base o interfaz tengan un atributo, puede agregar una prueba de unidad simple que obtenga todas las clases derivadas y afirme que cada una tiene el atributo y agregue los resultados de la unidad probar en su proceso de construcción posterior.

Cuestiones relacionadas