[英]Set Value of String in Static Class
我正在尝试通过单击 .aspx 页面上的按钮在静态类中设置字符串的值。 我不明白为什么该值始终为空。
这是静态类代码:
public static class XeroApiHelper
{
private static ApplicationSettings _applicationSettings;
public static string WebUrl { get; set; }
static XeroApiHelper()
{
// Refer to README.md for details
string callbackUrl = WebUrl + "/xero/xeroconnection.aspx";
我试图设置的字符串是WebUrl
。
点击事件中的代码如下:
protected void btnXeroConnect_Click(object sender, ImageClickEventArgs e)
{
string weburl = Request.Url.GetLeftPart(UriPartial.Authority);
XeroApiHelper.WebUrl = weburl;
_user = XeroApiHelper.User();
_authenticator = XeroApiHelper.MvcAuthenticator();
var authorizeUrl = _authenticator.GetRequestTokenAuthorizeUrl(_user.Name);
Response.Redirect(authorizeUrl);
}
非常感谢任何帮助。
这是因为static constructor
。 在引用任何静态成员之前调用构造函数。 这意味着在XeroApiHelper.WebUrl = weburl;
行之前已经调用了构造XeroApiHelper.WebUrl = weburl;
是执行。 在callbackUrl
设置null
值
在创建第一个实例或引用任何静态成员之前,会自动调用静态构造函数来初始化类。 静态构造函数将在实例构造函数之前运行。 当调用分配给事件或委托的静态方法时而不是在分配时调用类型的静态构造函数。 如果静态字段变量初始值设定项出现在静态构造函数的类中,它们将按照它们在静态构造函数执行之前出现在类声明中的文本顺序执行。
编辑:包括可能的解决方案
将代码从static
构造函数移动到WebUrl
调用set
为:
private static string _WebUrl;
public static string WebUrl
{
get { return _WebUrl; }
set
{
_WebUrl = value;
string callbackUrl = _WebUrl + "/xero/xeroconnection.aspx";
// move rest of code from constructore here
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.