无法从C#中的Dictionary属性获取值

时间:2015-06-18 21:07:13

标签: c# dictionary properties

我有一个名为Role

的类的代码
public static class Role
{
    private static Dictionary<string, List<Permissions>> _userRole;
    private static List<Permissions> _userPermission;

    public static Dictionary<string, List<Permissions>> UserRoleInfo
    {
        get { return _userRole; }
    }

    public Role()
    {
        _userRole = new Dictionary<string, List<Permissions>>();
         _userPermission = new List<Permissions>();
    }}

在另一个类中我试图从UserRoleInfo属性中获取匹配键的值

List<Permissions> value = Role.UserRoleInfo(authenticatedUserName)

但是我收到以下错误

Error   7   Non-invocable member 'User.Role.UserRoleInfo' cannot be used like a method.

任何想法如何绕过它或我的错误在哪里,因为使用

if(Role.UserRoleInfo.ContainsKey(authenticatedUserName))

工作正常

2 个答案:

答案 0 :(得分:0)

您需要使用方括号来访问字典的成员:

List<Permissions> value = Role.UserRoleInfo[authenticatedUserName];

答案 1 :(得分:0)

  1. 在C#中获取字典值的正确语法是

    Role.UserRoleInfo[authenticatedUserName]
    
  2. 从实例构造函数初始化静态成员是个坏主意。您可能希望构造函数也是static。 (或使字段和属性非静态 - 以您的使用更有意义为准)