gpt4 book ai didi

c# - 如何在 WCF 客户端代理中公开的接口(interface)中声明事件?

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:20 27 4
gpt4 key购买 nike

我有以下场景:

  • 一个服务契约接口(interface)(IInterface)
  • 接口(interface)内声明的事件(稍后会解释用途)
  • 实现该接口(interface)的一个类,服务类(MyClass)
  • 使用接口(interface)契约打开 channel 并获取代理类的客户端,该代理类公开所有实例的成员,包括事件。

当我创建服务类的实例时:

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# 结构。它绑定(bind)到 C# 语言。 WCF 不会在其端点上公开此类构造。

如果 IInterface 是您的服务契约(Contract)并且有一个 C# 事件。此事件不会在客户端代理生成的 IInterface 上显示/创建。

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

关于c# - 如何在 WCF 客户端代理中公开的接口(interface)中声明事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17238302/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com