Donc, si j'ai:Comment obtenir tous les attributs sur l'ancêtre de l'interface/type de base d'une propriété?
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; }
}
Quelle magie puis-je utiliser pour faire quelque chose comme:
[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);
}
deux
property.GetCustomAttributes(true);
Et
Attribute.GetCustomAttributes(property, true);
Renvoie seulement 1 attribut. L'instance est celle créée avec MyCustomAttribute (1). Cela ne semble pas fonctionner comme prévu.
Dans l'exemple fourni, l'assertion échoue. Il renvoie 1 attribut, pas tous les 3. –
Vous avez raison, c'est parce que c'est juste un attribut personnalisé. – albertein
Si je change l'instance de l'attribut, il semble ne retourner que celui de la voiture. Donc, ce n'est pas la recherche de voiture. Voir la question mise à jour. Ty pour l'aide cependant. –