Voici ma définition d'attribut:C# - Énumération Attributs personnalisés par réflexion
[AttributeUsage(AttributeTargets.Field)]
public class Optional : System.Attribute
{
public Optional()
{
}
}
En MyClass:
[Optional] public TextBox Name;
Enfin, dans une autre fonction:
typeof(MyClass).GetFields().ToList<FieldInfo>().ForEach(x => writer.WriteLine(
x.FieldType + " is called " +
x.Name + " and has attributes " +
x.GetCustomAttributes(true)[0]
));
Le problème est que je reçois une erreur pour l'index 0. Je veux juste vérifier les champs où l'attribut est appliqué. L'erreur disparaît lorsque je supprime x.GetCustomAttributes(true)[0]
.
erreur exacte:
Exception Détails: System.IndexOutOfRangeException: index était en dehors des limites du tableau.
Erreur Source:
Line 63: }
Line 64:
Line 65: typeof(T).GetFields().ToList<FieldInfo>().ForEach(x => writer.WriteLine(x.FieldType + " is called " +
Line 66: x.Name + " and has attributes " +
Line 67: x.GetCustomAttributes(true)[0]+ "</br>"));
Quelle est l'erreur? – harpo
Ajouté - Gardez à l'esprit ceci disparaît si je supprime la partie "GetCustomAttributes". –