有没有办法添加不是字符串的声明? (就我而言,添加一个具有枚举值的声明是我想要的,但我一般都想知道各种类型。)
例如,这就是我想要做的事情:
ClaimsIdentity identity = new ClaimsIdentity("my_auth_type");
identity.AddClaim(new Claim("my_claim_name", MyEnum.SomeValue));
第二行无效,因为Claim构造函数期望将字符串作为第二个参数。我可以打电话给enumValue.ToString()
,但理想情况下,将它强烈打印似乎是一种更好的做法。这可能吗?
答案 0 :(得分:3)
您可以像这样定义扩展方法:
public static void AddEnumClaim<T>(this ClaimsIdentity identity, String type, T enumvalue)
where T : struct
{
if (!typeof(T).IsEnum)
throw new ArgumentException("AddEnumClaim must be an enum");
identity.AddClaim(new Claim(type, enumvalue.ToString()));
}
并将其命名为:
identity.AddEnumClaim("my_claim_name", MyEnum.SomeValue);