2017-03-09 3 views
4

J'ai une classe d'attribut personnalisée définie comme suit. J'ai appliqué l'attribut ci-dessus à une autre classe comme suit. Comment obtenir la valeur de Encrypted = True sur la propriété AuthClientId?C# .NET CORE comment obtenir la valeur d'un attribut personnalisé?

public class KeyVaultConfiguration 
{ 
    [Encrypted(true)] 
    public string AuthClientId { get; set; } = ""; 

    public string AuthClientCertThumbprint { get; set; } = ""; 
} 

Comment obtenir la valeur de Encrypted = True?

var config = new KeyVaultConfiguration(); 

// var authClientIdIsEncrypted = ?? 

Dans .NET Framework, c'était facile. Dans .NET CORE, je pense que c'est possible mais je ne vois aucune documentation. Je crois que vous devez utiliser System.Reflection mais exactement comment?

Répondre

9

Ajoutez using System.Reflection puis vous pouvez utiliser les méthodes d'extension de CustomAttributeExtensions.cs.

Quelque chose comme cela devrait fonctionner pour vous:

typeof(<class name>).GetTypeInfo() 
     .GetProperty(<property name>).GetCustomAttribute<YourAttribute>(); 

dans votre cas

typeof(KeyVaultConfiguration).GetTypeInfo() 
     .GetProperty("AuthClientId").GetCustomAttribute<EncryptedAttribute>(); 
+0

Yup grâce qui était elle :) – SamDevx

+0

m'a beaucoup aidé - merci! – xFight