更新:
海因兹是对的.AutoCAD Polyline是引用类型,而不是结构.好点子.但我简化了场景,因为我在实际应用程序中处理的是一个AutoCAD对象,它是struct.所以请将两者都视为struct而不是引用类型.
我正在寻找正确的方法来应对这种情况,如果有人能够阐明或帮助我更好地理解,我将不胜感激.
数据访问层中有一个接口,有两个实现来处理两个不同的提供程序:AutoCad和Sketchup API.
interface IEntity { void object GetPoly(); void void InsertPoly(object poly); } class AutocadEntity { void object GetPoly() { //calling Autocad APIs return Autocad Polyline object } void InsertPoly(object poly){...} }
GetPoly的Autocad实现将返回Polyline对象,因为这是在Autocad API中定义为折线,而Sketchup将返回Face对象.
我已经将返回类型(和参数)定义为对象来处理这些不同的类型.成本是拳击/拆箱发生时的性能问题.并且它更大胆地显示返回/参数是object []的位置.
我首先想知道方法返回/参数类型泛型是解决方案,但我认为它不会是因为实现是特定于类型的.