当前位置: 首页 > 编程语言 > C#

C#将B类中的对象分配给A类分享

时间:2023-04-10 20:52:15 C#

C#将B类中的对象分配给A类我有两个类。A类:公共类A{propstringp1{get;放;}道具串p2{得到;放;}道具串p3{得到;放;}}B类:publicclassB{propstringp1{get;放;}道具串p3{得到;放;现在假设我们有一个B类对象,我们想将它分配给A类对象。Bb_obj=newB(){p1="something",p2="somethingelse"}Aa_obj=newA(){p1=b_obj.p1,p3=b_obj.p3,}我认为上面的解决方案不是最好的方法。将b_obj分配给A类中A的另一个对象的最佳做法是什么?提示:B类的所有属性在A类B中都有相似的属性你可以使用automapperhttp://automapper.org/然后你可以像这样使用它:AutoMapper.Mapper.CreateMap();vara=...varmodel=AutoMapper.Mapper.Map(a);您始终可以实现隐式或显式转换运算符:publicclassB{publicstaticexplicitoperatorA(Bb){returnnewA(){p1=b_obj.p1,p3=b_obj.p3,}}//...现在,每当你需要B的A时,你可以这样写:vara=(A)b;如果您无权访问A或B,则可以实现扩展方法:publicstaticAToA(thisBb){return...}以类似的方式使用:vara=b.ToA();您可以使用AutoMapper(参见denisv的回答),它提供类之间基于名称的映射。然后您可以根据需要自定义映射。你也可以写一些扩展方法:publicstaticclassExtensions{publicAToA(thisBb){returnnewA(){p1=b_obj.p1,p3=b_obj.p3,};}}首先初始化B类并设置值。然后像这样创建一个类:publicstaticvoidCopyPropertyValues(objectsource,objectdestination){vardestProperties=destination.GetType().GetProperties();foreach(varsourcePropertyinsource.GetType().GetProperties()){foreach(vardestPropertyindestProperties){if(destProperty.Name==sourceProperty.Name&&destProperty.PropertyType.IsAssignableFrom(sourceProperty.PropertyType)){destProperty.SetValue(目的地,sourceProperty.GetValue(来源,新对象[]{}),新对象[]{});休息;}}}}并将类A和B作为参数传递给此类。以上是C#学习教程:C#将B类中的对象赋值给A类,很有用,需要多了解C#学习教程。希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: