我需要將一個對象的屬性複製到另一個對象,兩個對象可以是不同的類型,可以具有相同名稱的屬性。這些屬性也可以是複雜的類型。複製選擇屬性到其他類型的對象
我是能夠實現簡單TYPE
性質,我怎麼過的,我無法實現這一複雜類型的複製功能..像見下面的示例代碼段
[TestClass]
public class PropAssignTest
{
[TestMethod]
public void Test()
{
Test1 t1 = new Test1() { Prop1 = "test", TestName = new Test3 { Name = "santosh" } } ;
Test2 t2 = new Test2();
Assign<Test1, Test2>(t1, t2, e => e.Prop1);
Assign<Test1, Test2>(t1, t2, e => e.TestName.Name);//this doesnot work !!
}
private void Assign<T1,T2>(T1 T1Obj, T2 T2Obj, Expression<Func<T1, object>> memberLamda)
{
var memberSelectorExpression = memberLamda.Body as MemberExpression;
if (memberSelectorExpression != null)
{
var property = memberSelectorExpression.Member as PropertyInfo;
if (property != null)
{
T2Obj.GetType().GetProperty(property.Name).SetValue(T2Obj, property.GetValue(T1Obj));
}
}
}
在上面的代碼中,我想複製e.TestName.Name
,其中TestName
是一個複雜類型的對象,其中我只需要複製TestName
,TestName
的Name屬性就可以定義許多屬性。
任何建議...
感謝
只需使用AutoMapper :) –
不,我不能,我One.Because只想複製選定的屬性,Automapper會嘗試複製所有屬性。 –
@SantoshVaza你可以配置AutoMapper如何將T1映射到T2 –