繁体   English   中英

在静态类中设置字符串的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM