我在Visual Studio 2010中编写Cannot access non-static field _cf in static context
时遇到错误,有人可以解释一下我收到此消息的原因以及可能的解决方法吗?
CommonFunctions.cs
namespace WebApplication1.Functions
{
public class CommonFunctions
{
public string CurrentUser()
{
string login = HttpContext.Current.User.ToString();
string[] usplit = login.Split('\\');
string name = usplit[1];
return name;
}
}
}
Team.aspx.cs
namespace WebApplication1
{
public partial class Team : System.Web.UI.Page
{
private readonly CommonFunctions _cf = new CommonFunctions();
public string CurrentUser = _cf.CurrentUser();
protected void Page_Load(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(CurrentUser))
{
// Do stuff here
}
else
{
// Do other stuff here
}
}
}
}
我可以将CurrentUser
代码直接放入protected void Page_Load
函数中,但由于我需要在整个项目中重用CurrentUser
,所以复制似乎很荒谬。
非常感谢任何帮助: - )
答案 0 :(得分:4)
在构造函数中进行设置会更有意义:
namespace WebApplication1
{
public partial class Team : System.Web.UI.Page
{
private readonly CommonFunctions _cf;
public string CurrentUser;
public Team()
{
_cf = new CommonFunctions();
CurrentUser = _cf.CurrentUser();
}
protected void Page_Load(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(CurrentUser))
{
// Do stuff here
}
else
{
// Do other stuff here
}
}
}
}
答案 1 :(得分:0)
您无法通过调用_cf字段上的方法来初始化当前用户字段。这两个字段没有此执行的特定顺序。可以首先初始化CurrentUser。