更改派生类的字段类型

时间:2021-02-17 02:15:27

标签: c#

嘿,我有一个从另一个类派生的新模型,该模型具有一些作为模型并从另一个类派生的属性。我需要将类型从 v1.models 更改为 v2.models。因此,例如我的新模型,我们将其称为模型 A,其中包含一个字段 something 和另一个作为类的字段。

public class A {
    public string id { get; set; }
    public List<Item> { get; set; }
}

然后我们有这样的 Item 类:

public class Item {
    public string id { get; set; }
    public List<People> People { get; set; }
}

人物类:

public class People : Person {
    public string id { get; set; }
}

最后,person 类具有以下字段:

public Location Location {get; set; }

我的问题是我只需要为 A 类更新 V2 模型的位置,而没有其他任何调用它的类,因此我无法在管道中更改它。所以目前它是 A.People.LocationV1 而我需要它是 A.People.LocationV2 。为具有新的独立类的事物创建新的流程是最好的选择吗?这些类中有更多的字段,我只是省略了不必要的。

1 个答案:

答案 0 :(得分:0)

如果这是您想要避免的,我认为您仍然需要更改大量代码。 由于将有 2 个 Person 和 2 种位置类型,我认为您需要使用通用类或使用不同的 PersonV2 创建一个新的 LocationV2 类。通常,后者是您可能想要使用的方法,因为它代表一种不同的数据类型。

以防万一你想使用泛型,我认为这应该是这样的。或者,您也可以将 class A 更改为泛型类。请注意,您仍需要使用 ItemPeoplePerson 更改另一个类,以提供 Location 类类型。

public class A {
    public string id { get; set; }
    public List<Item<LocationV2>> { get; set; }
}

public class Item<T> {
    public string id { get; set; }
    public List<People<T>> People { get; set; }
}

public class People<T> : Person<T> {
    public string id { get; set; }
}

public class Person<T> {
    public T Location { get; set; }
}