this accepted answerを使用して列挙型の列挙型を作成しました。GUIDの列挙型の作成
public enum AccessRoles
{
[EnumGuid("2ED3164-BB48-499B-86C4-A2B1114BF1")]
SysAdmin =1,
[EnumGuid("A5690E7-1111-4AFB-B44D-1DF3AD66D435")]
Admin = 2,
[EnumGuid("30558C7-66D9-4189-9BD9-2B87D11190")]
OrgAdmin = 3,
}
class EnumGuid : Attribute
{
public Guid Guid;
public EnumGuid(string guid)
{
Guid = new Guid(guid);
}
}
私は、GUIDは、列挙型の一部であるかどうかを確認してみてください、それがユーザID = 2ED3164-BB48-499B-86C4-A2B1114BF1が有効なGUIDであるにも関わらず、例外のSystem.InvalidOperationExceptionがスローされます。
if(Enum.IsDefined(typeof(AccessRoles), userId))
{
}
文字列とチェックに変換しようとしましたが、その時にはエラーは発生しませんが、ifループには入りません。
if(Enum.IsDefined(typeof(AccessRoles), userId.ToString().ToUpper()))
{
}
どうすれば修正できますか?それとも良い方法がありますか?私は複数のif文やcase文を避けたいので、enumとして使用すると再利用可能になります。
属性を列挙型に追加しても、その列挙型に有効な値は変更されません。 'Guid'値は' IsDefined() 'メソッドでは無効です。なぜそれがうまくいくと思いましたか?実際に何をしようとしていますか?あなたの質問を修正して、文脈がはっきりしている良い[mcve]と、具体的には理解できないことの良い説明が含まれているようにしてください。 –
'2ED3164-BB48-499B-86C4-A2B1114BF1'は有効な' GUID'ではなく '3'文字列がなく、最初の8文字に' 1'が、最後に '2'文字がありません。 – 12seconds
特定のuserIdがAccessRolesに存在する3つのGuidの一部であるかどうかをチェックしたいと思います。したがって、リンクの例を使用してGuidで列挙型を設計し、それが存在するかどうかを調べます。 –