我有一个第三方存储库(让我们称之为ExternalRepository),当查询特定的对象时,我会将属性字典作为键值对返回。该字典可能包含30-100个键/值对,具体取决于对象。
我的应用程序需要访问此ExternalRepository,而不是直接依赖它,我引入了另一个层(让我们称之为MyRepository),它将调用ExternalRepository并将字典转换为Typed Domain对象(每个键/值对成为一个属性)在我的域poco中,我的应用程序可以理解和使用它。
考虑到这个设计,我想知道是否有任何关于如何执行此翻译的好方法。正在编写一个包含所有键/值对作为属性的域对象,并将字典翻译成域对象我唯一的选择吗?这是我的设计现在的样本。
class ExternalRepository{
Dictionary<string, Object> GetObjectA();
}
class MyRepository{
A GetObjectA(){
var dict = _externalRepository.GetObjectA();
return MapToA(dict);
}
A MapToA(Dictionary<string, object> dict){
//Use something like a Automapper to map
}
}
class A{
public string Prop1;
public object Prop2;
}
在我的实际案例中,至少有30个不同的对象,例如A,其中有许多不同的属性。为每一个写一个域poco并翻译它对我来说听起来有点乏味。我已经阅读了一些关于使用动态对象(或Expando对象)的内容,但我有点担心将它们用作我的域对象。你们能想到其他任何方法来解决这个问题吗?
由于 凯