我有一個簡單的類,像這樣:類變量
public class MyClass
{
public string String1;
public string String2;
public MyClass()
{
}
public MyClass(string Json)
{
}
}
如果該類不帶參數的實例,它只是帶回一個空的對象。然而,當我通過一個JSON字符串到構造函數我想將所有屬性設置爲等於它們在JSON中的值。
我已經這樣做了使用JSON.NET由Newtonsoft類之外,這樣的:現在
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'是一個'struct',那麼'this = JsonConvert.DeserializeObject(Json);'的方法就行得通了。 –
唯一的方法是在構造函數中創建第二個實例,然後使用反射來克隆所有屬性。答案中提到的靜態工廠方法與您所要求的相比是次好的,甚至更好/更清潔的解決方案。 – Mark
我對您的問題沒有回答,似乎您已經有一些,但我想更正您的術語。你不「實例化變量」。通過創建該類型的對象,唯一可以實例化的就是一個類型。你想要做的是「初始化」這些變量,一個對象是一個類型的實例。 – jmcilhinney