我的控制器中的非静态字段,方法或属性需要对象引用

Gui*_*ngo 3 c# asp.net asp.net-mvc asp.net-mvc-4

可能重复:
非静态字段,方法或属性需要对象引用

我有一个非静态字段:

private IDictionary<string, string> _mappings = 
    new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase)
Run Code Online (Sandbox Code Playgroud)

我想在这样的动作中使用:

public static string GetMimeType(string extension)
{
    //...
    return _mappings.TryGetValue(extension, out mime) ? 
        mime : "application/octet-stream";
}
Run Code Online (Sandbox Code Playgroud)

编译器抱怨:

return语句中的非静态字段,方法或属性需要对象引用.

我该如何参考这个字段?

Tre*_*ley 16

您无法从静态成员访问实例成员,因此您有2个选择.

  1. 使方法成为实例方法(删除static关键字)
  2. 使字段成为静态(添加static关键字)

您选择的那个将取决于该字段是否应在所有实例之间共享.