如何在WCF客户端代理中公开的接口中声明事件
本文关键字:接口 声明 事件 WCF 客户端 代理 | 更新日期: 2023-09-27 18:19:28
我有以下场景:
- 服务合同的一个接口(IInterface)
- 接口内声明的事件(稍后我将解释用途)
- 实现这个接口的一个类,服务类(MyClass)
- 使用接口协定打开通道并获得代理类的客户端,该代理类公开所有实例的成员,包括事件
当我创建一个服务类的实例时,比如:
IInterface instance = (IInterface)new MyClass();
从那里,我可以做:
instance.Event1 += OnEvent1;
但当我创建代理客户端时:
IInterface proxy = new ChannelFactory<IInterface>(....);
Event1是如何在代理客户端中公开的?它们只是代理端的事件,对吗?它们与服务器类完全断开了连接,对吧?
所以,我可以做:
proxy.Event1 += OnEvent1;
但是Event1
永远不会从WCF服务器类实例调用,对吗?
如果WCF服务器类执行如下事件检查会发生什么:
if (Event1 != null)
{ Event1(); }
什么都没发生?
C#事件是一个C#构造。它与C#语言绑定。WCF不会在其端点上公开此类构造。
如果IInterface
是您的服务合同,并且有一个C#事件。在客户端代理生成的IInterface
上,此事件将不可见/不创建。
WCF使用回调协定来实现事件。