次のように定義されたカスタム属性クラスがあります。
[AttributeUsage(AttributeTargets.Property, Inherited = false)]
internal class EncryptedAttribute : System.Attribute
{
private bool _encrypted;
public EncryptedAttribute(bool encrypted)
{
_encrypted = encrypted;
}
public virtual bool Encrypted
{
get
{
return _encrypted;
}
}
}
上記の属性を別のクラスに次のように適用しました。
public class KeyVaultConfiguration
{
[Encrypted(true)]
public string AuthClientId { get; set; } = "";
public string AuthClientCertThumbprint { get; set; } = "";
}
プロパティAuthClientIdでEncrypted = Trueの値を取得するにはどうすればよいですか?
var config = new KeyVaultConfiguration();
// var authClientIdIsEncrypted = ??
.NET Frameworkでは、これは簡単でした。 .NET COREでは、これは可能だと思いますが、ドキュメントがありません。 System.Reflectionを使用する必要があると思いますが、正確にはどのようにしたらよいでしょうか。
追加 using System.Reflection
次に、 CustomAttributeExtensions.cs の拡張メソッドを使用できます。
このようなものがあなたのために働くはずです:
typeof(<class name>).GetTypeInfo()
.GetProperty(<property name>).GetCustomAttribute<YourAttribute>();
あなたの場合
typeof(KeyVaultConfiguration).GetTypeInfo()
.GetProperty("AuthClientId").GetCustomAttribute<EncryptedAttribute>();