我開始了與一個簡單的數據模型:複雜的繼承模式合同
{
"Make" : "Honda",
"Model" : "Civic",
"Engine" : {
"Location" : "Front"
}
}
這個對象滿足我的使用情況,直到我得到了一個額外的要求,所以就成了:
{
"Make" : "Honda",
"Model" : "Civic",
"FuelType" : "Gasoline",
"Engine" : {
"Location" : "Front",
"MPG" : 39
}
}
OR
{
"Make" : "Tesla",
"Model" : "Model S",
"FuelType" : "Electric",
"Engine" : {
"Location" : "Back",
"Range" : 300
}
}
現在,我知道我不能覆蓋使用C#派生返回類型,因此後續ING類的結構將無法正常工作:
abstract class Car { abstract Engine Engine; }
class GasolineCar : Car { override GasolineEngine Engine; }
class ElectricCar : Car { override ElectricEngine Engine; }
abstract class Engine { string Location; }
class GasolineEngine : Engine { int MPG; }
class ElectricEngine : Engine { int Cells; }
是否有這個數據模式模型類似的推薦的方式?要求是:
- 我可以用JSON.NET
- 我可以使用基地車&發動機類型90%的時間,只投它需要特定類型的字段時,容易出現反序列化。
注意:請不要爲上述示例特別提供備用解決方案。我對汽車一無所知,我真正的用例肯定需要使用這種模式或類似的東西。
此特定場景無關緊要。如果兩種引擎類型具有相同的字段名稱但具有不同的數據類型會怎麼樣? –
不知道我明白你的意思。引擎數據類型?在一天結束時,您需要一個可以映射到json對象的類。 json上的屬性需要映射到類上的屬性。如果json上有一個新的屬性,那麼這個類將會有一個新的屬性。 –