我有一个以下的字典。字典内容从一个模型复制到另一个模型
firstDict=Dictionary<string,X>
SecondDict=Dictionary<string,y>
其中X和Y表示模型类,x和y包含相同的属性,但x和y位于不同的名称空间中。
如何将firstDict
内容复制到secondDict
?
有没有什么直接的办法?
我有一个以下的字典。字典内容从一个模型复制到另一个模型
firstDict=Dictionary<string,X>
SecondDict=Dictionary<string,y>
其中X和Y表示模型类,x和y包含相同的属性,但x和y位于不同的名称空间中。
如何将firstDict
内容复制到secondDict
?
有没有什么直接的办法?
需要初始化手动特性(或使用AutoMapper):
var firstDict = new Dictionary<string, FirstNameSpace.X>();
var secondDict = new Dictionary<string, SecondNameSpace.Y>();
foreach (var pair in firstDict) {
var y = new SecondNameSpace.Y();
y.Prop1 = pair.Value.Prop1;
// ... '
secondDict.Add(pair.Key, y);
}
另一种选择,不使它简单,但安全是提供一个拷贝构造函数或工厂方法Y
这需要一个X
实例并封装它。
我已经做了下面..它似乎工作。 MyClassOne在我的用户界面中,而MyClassTwo则在一个被导入的称为business的独立程序集中。
using Business;
var firstDict = new Dictionary<string,MyClassOne>
{
{"Key1", new MyClassOne() {PropertyOne = "FirstValue1"}}
};
var secondDict = new Dictionary<string, MyClassTwo>
{
{"Key2", new MyClassTwo() {PropertyOne = "SecondValue1"}}
};
foreach (var entryToCopy in firstDict)
{
secondDict.Add("NewStringKey", new MyClassTwo(){PropertyOne = entryToCopy.Value.PropertyOne});
}
希望这是你以后..
您可以使用Linq
做到这一点
Dictionary<string, Y> secondDict = firstDict.ToDictionary(pair => pair.Key, pair => new Y {prop1 = pair.Value.prop1, prop2 = pair.Value.prop2, ...});
这要看情况。 X是隐式还是明确地转换为Y? (即'(Y)xObj'工作吗?)如果是,那么你可以拷贝数组 – Psi
X和Y类包含相同的属性。我的意思是Y类是X类的确切副本。 –
但是,如果它们彼此不相关,即派生,以便编译器可以使用类层次结构,则只有它们是动态的时才可以工作 – Psi