0

タイプの変数が6つありString、DBフィールドビットから取得した0/1の値が含まれています。

したがって、これらの変数は、Y=1のラジオボックスの値です。N=0。

これで、1つ以上の列挙子の値を受け入れる変数があり、パイプ「|」で区切られています。

if (bool.Parse(mht_ReadAccess) && bool.Parse(mht_WriteAccess))
{
  var grantAccessRequest = new GrantAccessRequest
  {
    PrincipalAccess = new PrincipalAccess
    {
      AccessMask = AccessRights.WriteAccess | AccessRights.ReadAccess,
      Principal = userreference
    },
    Target = recordentityreference
  };
}

さて、これはこの問題を解決するための静的な方法です。「mht_WriteAccess」のような6つの変数がある場合、それらの数がtrueに設定されていることを確認し、「AccessMask」変数の状況を自動的に変更して、すべての正しい列挙値をパイプで渡すにはどうすればよいですか。

これを自動的に行う方法があるかどうかを知りたいのですが、おそらく任意のサイクルでですか?

4

1 に答える 1

0
AccessRights rights = 0;

if (bool.Parse(mht_ReadAccess))
    rights |= AccessRights.ReadAccess;

if (bool.Parse(mht_WriteAccess))
    rights |= AccessRights.WriteAccess;

// do the same for all other variables

var grantAccessRequest = new GrantAccessRequest
{
    PrincipalAccess = new PrincipalAccess
    {
        AccessMask = rights,
        Principal = userreference
    },
    Target = recordentityreference
};
于 2012-11-07T16:45:21.140 に答える