gpt4 book ai didi

c# - 用于调用服务的 IService 接口(interface)。每个方法一个代理或一个全局类级代理

转载 作者:太空宇宙 更新时间:2023-11-03 11:43:12 25 4
gpt4 key购买 nike

我正在使用来自 Silverlight 应用程序 (MVVM) 和 Windows Phone 的 WCF 服务。我有一个服务类(自动生成)和一个 IServiceRepository 如下所示

public interface IServiceRepository
{
event EventHandler<SomeEventArgs> GetDataCompleted;
void Data GetData();
// 10 more methods for fetching different data.
}

我的 SerViceRepository 如下所示

 public class ServiceRepository : IServiceRepository
{
public event EventHandler<SomeEventArgs> GetDataCompleted;

public void Data GetData()
{
var proxy = new ActualServiceRefClient();
proxy.GetDataCompleted += PrivateGetDataCompleted;
proy.GetDatAsync();
}

private void PrivateGetDataCompleted(object s, SomeEventArgs e)
{
// Error check and all
if(GetDataCompleted != null)
GetDataCompleted(this, new SomeEventArgs(...));
}
}

我从我的 ViewModels 调用这个方法。现在我的问题是......

  1. 现在我正在创建代理类和附加事件处理程序以各种方式使用它。我应该怎么做它在的构造函数中服务库?正如我所说,我有大约10到12种服务方式打电话。
  2. 我应该在已完成的方法中注销事件处理程序吗?

最佳答案

  1. 我不确定它去哪里很重要。如果您只有一个调用的实际服务方法,那么将事件连接放在构造函数中是有意义的。如果您的服务存储库中的 10 种数据方法中的每一种都有一个实际的服务方法,那么将它们连接到 10-12 种单独的方法中的每一种方法更有意义。

  2. 视情况而定。如果您保留服务存储库的一个实例,多次调用它,那么您应该将事件连接移至构造函数,或者确保您不会在每次调用时重新连接事件处理程序。或者,您可以按照您所说的取消注册,但我认为最好在对象的生命周期内注册一次这些事件处理程序。如果您只是为每个 jar 头创建一个新的服务存储库实例,则无需注销事件处理程序。

希望这对您有所帮助!

关于c# - 用于调用服务的 IService 接口(interface)。每个方法一个代理或一个全局类级代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4100183/

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