Por lo tanto, si tengo:¿Cómo se pueden obtener todos los atributos en la interfaz de una propiedad/ascendencia del tipo de base?
public class Sedan : Car
{
/// ...
}
public class Car : Vehicle, ITurn
{
[MyCustomAttribute(1)]
public int TurningRadius { get; set; }
}
public abstract class Vehicle : ITurn
{
[MyCustomAttribute(2)]
public int TurningRadius { get; set; }
}
public interface ITurn
{
[MyCustomAttribute(3)]
int TurningRadius { get; set; }
}
¿Qué magia puedo usar para hacer algo como:
[Test]
public void Should_Use_Magic_To_Get_CustomAttributes_From_Ancestry()
{
var property = typeof(Sedan).GetProperty("TurningRadius");
var attributes = SomeMagic(property);
Assert.AreEqual(attributes.Count, 3);
}
Tanto
property.GetCustomAttributes(true);
Y
Attribute.GetCustomAttributes(property, true);
Solo devuelve 1 atributo. La instancia es la que está construida con MyCustomAttribute (1). Esto no parece funcionar como se esperaba.
En el ejemplo proporcionado, la afirmación falla. Devuelve 1 atributo, no todos 3. –
Tiene razón, eso es porque es realmente solo un atributo personalizado. – albertein
Si cambio la instancia del atributo, parece que solo devuelve el del auto. Entonces no busca después del auto. Ver pregunta actualizada Ty por la ayuda sin embargo. –