更新:
Heinzi是正确的,AutoCAD多段线是引用类型而不是结构体。这是很好的一点。但是我简化了场景,因为我在实际应用中处理的是一个AutoCAD对象,它是结构体。所以请将两者都视为结构体而不是引用类型。
我正在寻找在这种情况下采取的正确方法,并且希望有人可以给予指导或帮助我更好地理解。
数据访问层中有一个接口,它有两个实现来处理两个不同的提供程序: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){...}
}
Autocad 的 GetPoly 实现将返回 Polyline 对象,因为 Autocad API 中将其定义为折线,而 Sketchup 则会返回面(Face)对象。
我将返回类型(和参数)定义为 object,以处理这些不同的类型。代价是性能问题,涉及装箱/拆箱。当返回/参数是 object[] 时,它表现得更加明显。
我曾想过使方法返回/参数类型成为泛型是解决方案,但我认为这并不是解决方案,因为这些实现是特定于类型的。
Polyline
或Face
是结构体吗? - Hamlet Hakobyan