Je veux être en mesure de vérifier la présence d'un attribut personnalisé sur une instance d'une classe, mais je veux être en mesure d'effectuer cette vérification depuis le constructeur de cette classe. Jetez un oeil à ce pseudo-code:Comment puis-je savoir si une variable d'instance utilisant une interface a un attribut personnalisé appliqué?
namespace TestPackage
{
public class MyAttribute : Attribute { }
public interface IMyThing { }
public class MyThing : IMyThing
{
private bool HasMyAttribute { get; set; }
public MyThing()
{
if (/* some check for custom attribute */)
{
HasMyAttribute = true;
}
}
}
public class MyWrapper
{
[MyAttribute]
private readonly IMyThing _myThing;
public MyWrapper()
{
_myThing = new MyThing();
}
}
}
Le if où j'ai le commentaire de code est ce que je voudrais remplir Est-ce possible.?
Non, ce n'est pas possible. L'attribut n'est pas appliqué à l'instance de la classe, il est appliqué au champ. – Amy
Cela me semble un anti-pattern ... – lintmouse
Les attributs sont définis statiquement dans le code et sont donc statiques, ils ne sont pas liés aux instances. Ils sont appliqués à un type ou à des membres de ce type. –