我敢肯定这一定是一个很常见的问题。我有两个 WCF 服务,它们基本上将标准访问权限和管理员访问权限公开给一个更大的服务。
每个服务上都有一个类似的方法Foo
。 Foo
采用在我的服务中定义的 TemplateInfo
类型的参数。
在我的客户端上,我引用了 Client
和 AdminClient
。 Client.Foo(TemplateInfo)
需要 Client.TemplateInfo
而 AdminClient.Foo(TemplateInfo)
需要 AdminClient.TemplateInfo
。我知道一旦服务到达 Client.TemplateInfo
和 AdminClient.TemplateInfo
是同一件事。
我正在尝试弄清楚如何实例化 TemplateInfo 和/或将其转换为与客户端和管理方法一起使用。有相当多的代码来创建这个对象,所以我希望不要为每种类型重复它。
类型在共享程序集中定义,我在我的代理中“重用类型”。但是我得到了两种不同的类型,因为我有两个服务引用。
做类似 (AdminClient)TemplateInfo 的事情会很棒,但也许我会创建一个克隆方法来转换类型。
最佳答案
没有办法做到这一点。它们是不同的类型。
您可以将该类型放入服务和客户端都引用的类库中。您可以告诉“添加服务引用”重用类型(这是默认设置),然后将使用类库中的类型。
请注意,客户端应用程序还需要引用与这两个服务相同的类库。
关于c# - 从 WCF 服务转换类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5237355/