-1

編集:ほとんどの場合、正常に動作し、エラーは例外的です。

このメソッドが呼び出された行で、エラー レポートには KeyNotFoundException がスローされたことが示されています。

public Task<bool> UpdateStatusAsync(Some object, Status status)
{
    var somerequest = new Somerequest 
    {
        ...
        Status = MapDomainStatusToAclStatus(status.Type),
        ...
    };

    .............
}

マッピング関数は次のとおりです。

private string MapDomainStatusToAclStatus(DomainStatus domainStatus)
{
    if (DictionaryDomainACLStatus.ContainsKey(domainStatus))
    {
        return DictionaryDomainACLStatus[domainStatus];
    }

    // Some refactor todo comment.
    switch (domainStatus)
    {
        case DomainStatus.Aborted:
            return "Some string";
    }

    Log.Info($"[MapDomainStatusToAclStatus] DomainStatus={domainStatus} cant be mapped to ACL status");
    return String.Empty;
}

それは可能ですか?

編集:

競合状態の可能性についていくつかの返信があったので、辞書が次のように宣言されていることを追加したいと思います。

 public static readonly Dictionary<DomainStatus, string> { values }

Edit2:私の辞書宣言:

public static readonly Dictionary<DomainStatus, string> DictionaryDomainACLStatus= new Dictionary<DomainStatus, string>
    {
            {DomainStatus.Approved, "TEXT" },
            {DomainStatus.Declined, "TEXT2" }
    };

後でコード内で create update delete 操作が発生することはありません。

4

3 に答える 3