键入转换而不引入依赖项?

时间:2011-03-15 19:16:44

标签: c# .net extension-methods type-conversion

我有两种类型:

  • MyImmutableType
  • MyDBType

我想介绍两种类型之间的类型转换。 我看到我可以将type conversion与隐式和显式运算符一起使用。

我的问题是我不想在我的CommonTypes库中引入MYDBType的依赖项。 我怎么能做到这一点?可能通过extnesion方法?无需让我的CommonTypes库了解我的MyDBType库。

我可以做扩展方法,但我不知道如何进行扩展操作符转换。

原因:我想要没有依赖的原因是我有一个客户端/服务器架构。我不想将我的数据库类分发给我的客户端用户。但我希望我的服务器端代码能够轻松使用演员表。

3 个答案:

答案 0 :(得分:1)

除了两个类中的任何一个之外,你不能在任何地方定义隐式或显式运算符。

但您当然可以在其他地方定义转换方法,例如在第3个库中。

如果您想依赖某个私有类的某些细节,那么棘手的部分就是如此,因此需要在类本身内进行处理。但是如果是这样的话,你真的不想在没有引入依赖的情况下尝试这样做,除非你想诉诸反思(在某些情况下是一种有效的替代方案)。

答案 1 :(得分:1)

正如你所说,Extensions方法对此非常好。您可以在不同的类甚至命名空间中分离这些方法。

答案 2 :(得分:0)

我认为你不能真正摆脱这里的依赖。您可以将转换移动到工厂/实用程序类,这样类型就不必彼此了解。只有实用程序类必须具备两者的知识。