我有一個名爲BaseClass的類,它具有各種類型的許多屬性,包括列表和字典。這個類有三個派生類,它們有更多的屬性。這些類已經在一個大的應用程序中使用,所以現在改變設計是不可行的。如何從其基礎對象填充對象的屬性值
所以派生類是這樣的:
public class DerivedClass1 : BaseClass
{
public string PropertyOne { get; set; }
}
public class DerivedClass2 : BaseClass
{
public string PropertyTwo { get; set; }
}
public class DerivedClass3 : BaseClass
{
public string PropertyThree { get; set; }
}
我需要執行多態基於駐留在基類中的屬性,當我反序列化這些類。所以每次將Json對象反序列化爲BaseClass時,我都需要檢查該屬性值並創建正確的具體類。要做到這一點,我需要像PopulateFrom(這BaseClass的情況下,BaseClass的fromObject)的方法,所以我可以這樣調用它:
var deserializedObjet = Serializer.Deserialize(jsonString);
switch(deserializedObjet.ConcreteType)
{
case 1:
return new DerivedClass1().PopulateFrom(deserializedObjet);
case 2:
return new DerivedClass2().PopulateFrom(deserializedObjet);
case 3:
return new DerivedClass3().PopulateFrom(deserializedObjet);
}
派生類在JSON字符串的數據。他們所做的是獲得相同的數據,但他們對它們執行不同的操作,或者以不同的方式表示它們,所以我只需要將Json反序列化到BaseClass。
我知道StackTrace.Text有一個類似的方法,但該方法是從版本4添加的,這不是免費的。
如果您將JSON反序列化爲'BaseClass',那麼它將忽略派生類屬性的序列化值。一旦你找出它是哪一個,你就需要反序列化到正確的類。 –
對不起,我可能沒有正確提到這個問題。派生類在Json字符串中沒有數據。他們所做的是獲得相同的數據,但他們對它們執行不同的操作,或者以不同的方式表示它們。 – Aref