2

我有以下情况:

  • 一个服务契约接口(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(); }

...什么都没发生?

4

1 回答 1

2

C# 事件是一个 C# 构造。它绑定到 C# 语言。WCF 不会在其端点上公开此类构造。

IfIInterface是您的服务合同并且有一个 C# 事件。IInterface在客户端代理上生成的此事件将不可见/创建。

WCF 使用回调契约来实现事件。

于 2013-06-21T17:33:03.940 回答