C# 使客户端代理变量为全局变量

C# 使客户端代理变量为全局变量,c#,wcf,visual-studio,C#,Wcf,Visual Studio,我必须在页面上的每个方法中声明客户端代理,如: ServiceReference1.Service1Client proxy = new ServiceReference1.Service1Client(); proxy.GetStuffListCompleted += showList; proxy.GetStuffListAsync("teacher"); 我可以声明一次代理吗?使用静态属性创建代理的单例实例,该属性返回代理实例的唯一实例 public class MyPr

我必须在页面上的每个方法中声明客户端代理,如:

ServiceReference1.Service1Client proxy = new ServiceReference1.Service1Client();
    proxy.GetStuffListCompleted += showList;
    proxy.GetStuffListAsync("teacher");

我可以声明一次代理吗?

使用静态属性创建代理的单例实例,该属性返回代理实例的唯一实例

public class MyProxySingleton
{

private static Service1Client  _proxy = null;

public static Service1Client Instance 
{ 
  get
  {
    if (_proxy == null)
    {
        _proxy = new Service1Client();
    }

    return _proxy;
  }
}
}

对将其声明为静态变量或将其声明为singleton其他人声明请小心使用singleton/共享代理。如果遇到WCF故障,您必须重新创建代理。您也可以将其创建为静态。。。没有混合单例和静态的点。实现已经在使用静态属性。单例只是一种使用静态方法/属性的设计模式。虽然这是一个很好的答案,但要小心使用单例/共享代理。如果遇到WCF故障,必须重新创建代理。