我有一个像下面的代码结构。我知道这个例子有点奇怪,但我正在使用的实体结构相似。如何将持久化实体转换为C#中的具体类型#
interface IAnimal
{
string name {get; set;}
int Age { get; set;}
string AnimalType { get; set;}
ICollection<Dependent> Dependents{get; set;}
}
interface IDependent : IAnimal
{
string RelationshipToParent{get; set;}
}
class Dependent : IDependent
{
public string name { get; set;}
public int Age { get; set;}
public string AnimalType { get; set;}
public string RelationshipToParent { get; set;}
public ICollection<Dependent> Dependents { get; set;}
}
class Animal : IAnimal
{
public string name { get; set;}
public int Age { get; set;}
public string AnimalType{get; set;}
public ICollection<Dependent> Dependents { get; set;}
}
class Tiger : IAnimal
{
public string name { get; set;}
public int Age { get; set;}
public string AnimalType{get; set;}
public ICollection<Dependent> Dependents { get; set;}
}
class Dog : IAnimal
{
public string name { get; set;}
public int Age{ get; set;}
public string AnimalType{get; set;}
public ICollection<Dependent> Dependents{ get; set;}
}
class DogDependent : Dependent
{
}
class TigerDependent : Dependent
{
}
动物可以有家属的任何其他动物(eg..Tiger可以有家属如狗和大象) 动物和从属类(使用实体框架)SQL Server中的持久化实体。 我的问题是我有大约20个这样的具体动物..从DB读取实体后,我需要一种复杂的方式来将动物转换为像虎,狗等具体类型。基于AnimalType属性。
示例.. 如果AnimalType为Animal的对象为“Tiger”,则动物应转换为Tiger类型(具有所有属性)。依赖者也是如此,如果从属动物类型是狗,那么依赖者应该转化为狗依赖。
有没有更好的方法来做到这一点,而不是为每种类型写一个映射器?
请提供某种形式的可编译代码。你有字段的接口,没有类型的类成员字段等等。很难将伪问题从实际问题中分离出来。 – grek40
@ grek40更新了代码 – DivideByzero
有几件事我不明白你的代码:接口应该描述行为,也就是你的对象可以做的动作。根据这个动物应该是一个阶级,也许是抽象的。你的具体动物不会在基础动物身上添加任何功能,所以我认为这不是必要的,你可以使用基础动物并将混凝土动物作为动物的属性。所有这些都将上述模型简化为只有两个类。 – lgrosales