我有wcf网络服务。 Serice当然使用ServiceContract属性实现insterface。它还实现了另一个没有ServiceContract属性的接口,并存储在外部dll中。当我生成代理时,我没有在代理对象中实现第二个接口。有没有办法让svcutil生成实现它的代理,或者我需要手动添加该代码?
此致
答案 0 :(得分:0)
如果在包含代理的项目中添加对包含接口定义的程序集的引用,则代理生成工具将使用已知接口而不是生成自己的接口。
答案 1 :(得分:0)
这是不可能的。实现会是什么样的?它应该只是从原始类复制粘贴实现吗?如果要将方法公开为Web服务,则必须将它们放在具有ServiceContract
属性的类或接口中。
假设原始服务类如下所示:
public class MyService : IServiceContract, IOtherInterface
{
...
public ObjectFromServiceAssembly MethodFromOtherInterface()
{
Console.WriteLine("Create instance of some object.");
return new ObjectFromServiceAssembly();
}
}
MethodFromOtherInterface
如何看待生成的代理端?它不能简单地从服务端复制您的实现。
答案 2 :(得分:0)
这没有意义。如果接口未标记为ServiceContract,则它不会在服务上公开,也无法从代理中调用。如果您希望代理也实现接口,您还必须在代理中编写接口的实际实现(客户端!)=从服务复制代码。最好的方法是在服务中实现接口,而是使用帮助程序类,并在客户端和服务器之间共享此类。您将只有一个实现,您将分享它。