我在客户端应用程序中使用的项目中有很多web方法。 ]
我不想写这样的代码:
using(ServiceClient sc = new ServiceClient())
{
//Invoke service methods
sc.Method1();
}
相反,我想写:ServiceClient.Method1();
在这种情况下,所有参与代理初始化,调用方法,处理,异常处理的常见操作都将在ServiceClient中。当然,我可以用类似的代码包装我的任何web方法,或者使用反射来按名称重新获取方法,但是可能还有其他方法吗?
答案 0 :(得分:1)
我假设您正在使用“添加服务引用”来生成ServiceClient ...
首先,it's not safe将ServiceClient(源自ClientBase)包装在using块中。 Here is a stackoverflow thread深入探讨。
其次,您可以封装生成的ServiceClient并创建执行您所描述内容的静态方法,但这是很多手动编码,只有很少的好处。我鼓励您将代理创建,调用,错误处理,关闭和处理封装在泛型类中。 This is a good example
答案 1 :(得分:0)
您可以将“Method1”设为ServiceClient的静态成员,然后调用ServiceClient.Method1();