Me pregunto por qué cuando pones un atributo System.Diagnostics.Conditional ("DEBUG") en un método virtual en una clase base que no obtienes los errores del compilador en las clases derivadas que anula ese mismo método virtual pero no tiene el atributo condicional cuando la condición no se cumple. Ejemplo:Atributo condicional en una función virtual
public class MyBaseClass
{
[System.Diagnostics.Conditional("DEBUG")]
public virtual void Test()
{
//Do something
}
}
public class MyDerivedClass : MyBaseClass
{
public override void Test()
{
//Do something different
}
}
Parece que cuando DEBUG no está definido, el condicional esencialmente haría un sitation donde el método de reemplazo no puede existir porque no hay función virtual en la salida IL real. Sin embargo, en mis pruebas, el compilador parece generar el código de una manera u otra. ¿El condicional simplemente descarta el IL para el cuerpo de la función pero no realiza ningún cambio real en la firma de la clase?
tangencial: la reubicación del atributo condicional de la clase base virtual a la anulación de la clase derivada genera un error de compilación. Esto tiene sentido considerando el comportamiento detallado en la respuesta. – devgeezer