2 votes

C# Compte tenu d'une classe personnalisée et d'un attribut personnalisé, comment trouver les attributs d'une classe à partir de la classe de base ?

Étant donné la classe suivante

[KeyField("dap_name")]
public class nhs_acquisition_profile
    : DALObject
    , IDisposable
{
    public nhs_acquisition_profile()
        : base()
    {
    }

    public nhs_acquisition_profile(String ConnectionString)
        : base(ConnectionString)
    {

    }

}

Comment puis-je trouver la valeur de l'attribut KeyField autrement qu'à partir de la classe de base ?

4voto

ASpirin Points 2313

Je suppose que vous en avez besoin dans une phase de construction

public DALObject() // base constructor
{
    var fieldAttr = GetType() // real type
        .GetCustomAttributes(typeof(KeyFieldAttribute), true) // look for attribute
        .FirstOrDefault(); // can take more than one, it's an example
    var resultField = (fieldAttr as KeyFieldAttribute)?.Field; // cast and use
}

Le même code fonctionnera de la même manière dans les autres fonctions de la classe

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X