我开始了与一个简单的数据模型:复杂的继承模式合同
{
"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上有一个新的属性,那么这个类将会有一个新的属性。 –