c#是否可以使用扩展方法来实现隐式转换?

时间:2011-09-07 12:01:56

标签: c# extension-methods implicit-conversion

  

可能重复:
  C#: implicit operator and extension methods

我有一个共同的库项目,定义了许多类型(没有太复杂,主要是属性)。有两个项目引用了这个公共库:客户端应用程序和Web服务。

我的目的是让webservice返回类型T,然后在客户端应用程序中使用T.通常我必须再次将webservice返回的类型转换为T(因为代理类,T作为WebService.T返回),但我希望改为使用implicit conversion

由于原始的Common类不了解Web服务代理类,我想知道是否可以使用extension methods 来实现隐式转换。类似

之类的东西
public static implicit operator MyObject(this MyProxyObject value)
    {
        //stuff
    }

编译器根本不喜欢它。

这样的事情是否可能?

更新

好的,首先我引用了2.0框架,以便解释我的编译器问题。

其次,我可以通过创建方法扩展“ToModel”(或其他东西)来实现转换。因此,就业务目标而言,我将能够通过调用WebService.T.ToModel()轻松转换我的类型。

虽然我怀疑这可以通过隐式转换来完成(或者它是否值得麻烦)。

2 个答案:

答案 0 :(得分:1)

如果您的Web服务是WCF服务而不是旧版ASMX服务,那么您可以在客户端配置服务引用以“重用引用程序集中的类型”。这将导致客户端使用公共库中的类型,而不是在客户端自动生成代理类。

答案 1 :(得分:0)

使用扩展方法不需要这样做。您应该能够删除this并且应该编译。或者将它作为explicit演员阵容更有意义。