我有一个共同的库项目,定义了许多类型(没有太复杂,主要是属性)。有两个项目引用了这个公共库:客户端应用程序和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()轻松转换我的类型。
虽然我怀疑这可以通过隐式转换来完成(或者它是否值得麻烦)。
答案 0 :(得分:1)
如果您的Web服务是WCF服务而不是旧版ASMX服务,那么您可以在客户端配置服务引用以“重用引用程序集中的类型”。这将导致客户端使用公共库中的类型,而不是在客户端自动生成代理类。
答案 1 :(得分:0)
使用扩展方法不需要这样做。您应该能够删除this
并且应该编译。或者将它作为explicit
演员阵容更有意义。