c# - 在不同库之间转换对象

标签 c# casting

我有一个 dll,我在其中定义了一个特定对象(比方说,Point3)以及不同的方法。

我有另一个 dll,我在其中使用相同类型的对象,但由于我想保持独立性,我声明了一个新对象 Point3_。这只是元素 (x,y,z) 的容器。

最后,我有一个使用这两个库的项目,我想知道是否有一种干净的方法可以从 Point3 转换为 Point3_,假设它们具有兼容的类型。

现在,我正在写这样的东西:

p_ = new Point3_(p.X, p.Y, p.Z);

我想要这样的东西:

p_ = (Point3_)p;

PS:如果这是重复的,我很抱歉,但我不确定如何在网络上搜索它。

提前致谢

编辑: 我不介意实现转换代码,但我想在第三个项目中编写它,它知道这两个库。这样我就可以单独开发库了。

最佳答案

不是真的。唯一的选择是实现您自己的转换运算符,但这恰恰意味着您要避免的耦合类型。

但是,您可以编写扩展方法来为您处理这个问题 - 这些方法可以在某些互操作库或您自己的消费者项目中声明。

public static Point3_ AsPoint3_(this Point3 @this)
{
  return new Point3_(@this.X, @this.Y, @this.Z);
}

简称为

p_ = p.AsPoint3_();

关于c# - 在不同库之间转换对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32116631/

相关文章:

c# - 如何在 ASP.Net Boiler Plate MVC 项目中调用应用服务

c# - 压缩包 : Can I rename or move a ZipArchiveEntry?

c# - 在 C# 中,将两个字节变量相加的结果分配给另一个字节变量会产生错误,只能分配给 int 变量

java - 为什么这种带有分数的类型在 Java 中可以有效?

java - 类型转换和编译时间常量

C#新操作bug?

c# - 如何在Winform中使用CSS格式化 Crystal 报表?

c# - 使用 NSubstitute 进行依赖注入(inject)

delphi - 当 AnsiString 转换为 PAnsiString 时会发生什么?

c - 我们为什么要进行类型转换?