C# 组合/转换来自2个不同API的2个类似对象类型
我是C#and OOP的初学者。我使用的两个第三方API包含相似的对象类型,它们的属性包含相同的值,但这两个API都有我需要使用的唯一(且相同)函数。例如: API1-积分类 公共财产 X:双人 Y:双份 公共方法 距离() ToArray() API2-积分类 公共财产 X:双人 Y:双份 公共方法 项目() ToArray() 目前,我已经创建了帮助器方法来从API1点类转换为API2点类,反之亦然,但必须有更好的解决方案。在这种情况下,编程专家会怎么做?谢谢 您可以使用。它使您能够定义映射C# 组合/转换来自2个不同API的2个类似对象类型,c#,oop,design-patterns,C#,Oop,Design Patterns,我是C#and OOP的初学者。我使用的两个第三方API包含相似的对象类型,它们的属性包含相同的值,但这两个API都有我需要使用的唯一(且相同)函数。例如: API1-积分类 公共财产 X:双人 Y:双份 公共方法 距离() ToArray() API2-积分类 公共财产 X:双人 Y:双份 公共方法 项目() ToArray() 目前,我已经创建了帮助器方法来从API1点类转换为API2点类,反之亦然,但必须有更好的解决方案。在这种情况下,编程专家会怎么做?谢谢 您可以使用。它使您能够定义映射
Mapper.CreateMap<Order, OrderDto>();
Mapper.CreateMap();
然后在任何地方都使用它
OrderDto dto = Mapper.Map<OrderDto>(order);
OrderDto-dto=Mapper.Map(order);
包装类和显式转换操作可以帮助解决您的问题
public class IntergratedPoint{
// private constructor to prevent misuse
// If want, you can do a normal constructor which create both pointApi1 and 2
private IntergratedPoint(){ }
// this can be set to reference either pointApi1 or 2
public double X{get;set;}
public double Y{get;set;}
private Api1.Point pointApi1;
private Api2.Point pointApi2;
public static explicit operator IntegratedPoint(Api1.Point pointApi1){
IntegratedPoint newPoint = new IntegratedPoint();
newPoint.pointApi1 = pointApi1;
newPoint.pointApi2 = new Api1.Point();
// set X and Y for pointApi2
}
// the explicit operator for Api2.Point
public double Distance(){
return pointApi1.Distance();
}
public double Project(){
return pointApi2.Project();
}
public double[] ToArray(){
// don't know what to do, but it you can do either pointApi1.ToArray() or so
}
}
最后,我向API1 Point类添加了各种扩展方法。使用类型转换帮助器方法,我可以让API1点类使用API2点类方法。这样,我在代码中只使用API1点对象。您如何处理API1和API2中的点类?是否将点对象从一个API处理为另一个API的输入?根据用户的操作,我可能需要使用其中一个唯一的函数。例如,API1处理可视化和UI,但有一些独特的函数(将样条线转换为点),然后我使用API2,这是纯数学函数,为其提供点。因此,我需要将API1点实体转换为API2点实体,以使函数正常工作。完成后,API2返回一组API2点,我需要将其转换回API1点,以显示在屏幕上。我没有看到这有助于OP的实际证据。Fendy,我喜欢这种方法。以确保我完全理解。我创建了自己的point类,其中包含每个API的一个点、显式运算符和两个API中需要的方法。然后我可以通过将任意一个API点转换为我自己的集成点来使用我的类?正确。这样,您可以同时使用这两个类,同时仍然可以控制自己的流。铸造可以由建造师注入代替,但这取决于你的口味。