gpt4 book ai didi

c# - 在该类的构造函数中实例化类变量

转载 作者:行者123 更新时间:2023-11-30 20:00:17 27 4
gpt4 key购买 nike

我有一个像这样的简单类:

public class MyClass
{
public string String1;
public string String2;

public MyClass()
{

}

public MyClass(string Json)
{

}
}

如果类在没有参数的情况下被实例化,它只会带回一个空对象。但是,当我将一个 JSON 字符串传递给构造函数时,我想将所有属性设置为等于它们在 JSON 中的值。

我在课外使用 Newtonsoft 的 JSON.NET 完成了此操作,如下所示:

string JsonArray = Base64.Decode(HttpContext.Current.Request.QueryString["songinfo"]);
MyClass tmp = JsonConvert.DeserializeObject<MyClass>(JsonArray);
MyClass InstantiatedClass = tmp;

InstantiatedClass 现在是一个完全填充的对象。但是,我想在构造函数本身中实现这一点,但我想不出一种方法来做到这一点。

我试过设置 this = JsonConvert.DeserializeObject<MyClass>(Json) ,但当然,this是只读的。

我知道我可以通过解析 Json 并将每个变量设置为其适当的 JSON 属性值来做到这一点,但我想这样做,因为它更简洁。

最佳答案

您不能从构造函数中执行此操作。您可能会考虑 MyClass 中的工厂方法像这样:

public static MyClass Deserialize(string json)
{
return JsonConvert.DeserializeObject<MyClass>(json);
}

构造函数不返回任何内容,正如您所说 this是只读的。因此,如果不(如您所说)手动解析 JSON 并初始化该实例中的不同变量,那么在构造函数中执行此操作是不可能的。

工厂方法可能就是您正在寻找的。

关于c# - 在该类的构造函数中实例化类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21392794/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com