我有一個像下面的代碼結構。我知道這個例子有點奇怪,但我正在使用的實體結構相似。如何將持久化實體轉換爲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