c#设置属性值在"(排除)

本文关键字:排除 quot 设置 属性 | 更新日期: 2023-09-27 17:53:11

在c#中,我有几个类,其中我有以下"逻辑":

 //objA and objB are instances of the same class
 objA.Property1 = objB.Property1;
 objA.Property2 = objB.Property2;
 objA.Property3 = objB.Property3;
 objA.Property4 = objB.Property4;
 .....
 objA.Property40 = objB.Property40;

我不想把值应用到所有的属性(但很大一部分)。

这是越来越重复,如果不知何故"类"的变化,有一个新的属性,没有编译错误,如果程序员不注意,将会有一个bug,因为我们将失去属性的变化.....

我想知道是否有以下方法:

->应用所有属性的值,不包括那些特别指向的,比如:

    //possible syntax 
    objA.SetAllPropertiesLess(objB, x => x.Id && x.CreateDate && x.IsDeleted);     

不需要像这个这样"花哨",但是对于开始,我想知道是否已经有类似的东西在。net框架中,然后如果没有,也许有人已经有一个实现(轻量级/快速)。

c#设置属性值在"(排除)

使用AutoMapper。

通过以下命令从nuget.org安装:

PM> Install-Package AutoMapper

然后将其导入到类文件中,并像下面这样使用:

CreateMap<objA, objB>().ForDestinationMember(x => x.IsDeleted, opt => opt.Ignore());

希望这对你有帮助。如果您有任何疑问,请告诉我。

您可以使用AutoMapper和条件映射来实现。