Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将一个实体类复制到具有相同成员的另一个类的简单泛型函数?_C#_Entity Framework_Wcf_Generics - Fatal编程技术网

C# 将一个实体类复制到具有相同成员的另一个类的简单泛型函数?

C# 将一个实体类复制到具有相同成员的另一个类的简单泛型函数?,c#,entity-framework,wcf,generics,C#,Entity Framework,Wcf,Generics,我的客户端当前正在以DataService.Entity的形式从WCF服务接收数据。但是,客户端将数据用作data.Entity。WCF服务和客户端都使用相同的EntityFramework(在internet的每一端) 是否有一个好的泛型函数可以接收泛型源DataService.Entity并将其以成员方式复制到数据中具有相同成员的相同实体 类似于Func(TDataService.Entity,TData.Entity)的东西 提前感谢您的帮助。请尝试自动映射器 Mapper.CreateM

我的客户端当前正在以DataService.Entity的形式从WCF服务接收数据。但是,客户端将数据用作data.Entity。WCF服务和客户端都使用相同的EntityFramework(在internet的每一端)

是否有一个好的泛型函数可以接收泛型源DataService.Entity并将其以成员方式复制到数据中具有相同成员的相同实体

类似于Func(TDataService.Entity,TData.Entity)的东西

提前感谢您的帮助。

请尝试自动映射器

Mapper.CreateMap<TDataService, TData>();
var tData = Mapper.Map<TData>(tDataService));
Mapper.CreateMap();
var tData=Mapper.Map(tDataService));
C#提供两个运算符:
隐式
显式
,允许您将一个对象设置为另一个对象

implicit
操作符允许您在不进行强制转换的情况下将一个对象设置为另一个对象,当您知道两个项目完全相同时(即

public class Object2 
{

    public static implicit Object2(Object1 ojbect1)
    {
        return new Object2{
            field1 = object1.field1,
            field2 = object1.field2
        }
    }

}

Object2 object2 = object1;
explicit
操作符要求您强制转换对象,当您需要清楚转换正在进行时,或者当对象不完全相同时,这很有用

public class Object2
{
    public static explicit Object2(Object1 object1)
    {
        Object2 object2 = new Object2();
        object2.field1 = object1.field1;
        object2.field2 = object1.field2 + object1.field3;
        return object2;
    }
}

Object2 object2 = (Object2)object1;

我从Nuget安装了AuotMapper,但是执行上述代码还需要做些什么?我无法让VS2010识别“映射器”。谢谢。Automapper是一个第三方库,旨在为您自动完成其中的一些转换。我希望它能起作用:this.Encounterdetails=e.Result.Select(y=>{Mapper.CreateMap();return Mapper.Map(y);});这解决了大小写问题,但如何创建一个通用函数,在事先不知道每个成员是什么的情况下复制这些成员呢;因此,
Object1
中的所有字段总是与
Object2
中的字段相同,对吗?是的。但在上面,我必须显式写出obj2.field1=obj1.field1,这基本上就是我现在在lambda表达式中所做的,并且需要针对每个类(其中我有大约100个类)进行指定。我希望有一个函数可以通过类成员自动复制。谢谢。是的,如果您试图自动化100个类,那么使用AutoMapper可能是一个更好的选择。