C# 创建泛型soapClient的实例
通常我会像这样实例化一个SoapClient:C# 创建泛型soapClient的实例,c#,generics,types,C#,Generics,Types,通常我会像这样实例化一个SoapClient: public static TestWSSoapClient Test() { string endpoint = "endpoint"; var soapClient = new TestWSSoapClient(endpoint); return soapClient; } 但我想使用一种更通用的方法: public static ICommunicationObject SoapClient<TSoap>
public static TestWSSoapClient Test()
{
string endpoint = "endpoint";
var soapClient = new TestWSSoapClient(endpoint);
return soapClient;
}
但我想使用一种更通用的方法:
public static ICommunicationObject SoapClient<TSoap>()
{
string endpoint = "endpoint";
var soapClient = new TSoap(endpoint);
return soapClient;
}
publicstaticicommunicationobjectsoapclient()
{
字符串endpoint=“endpoint”;
var soapClient=新的TSoap(端点);
返回soapClient;
}
但显然,您不能从泛型类型创建这样的实例。如何创建此实例并仍然将端点
字符串传递给它?公共静态T GetChannel(绑定绑定,端点地址)
public static T GetChannel<T>(Binding binding, EndpointAddress address)
{
var channelFactory = new ChannelFactory<T>(binding, address);
var channel = channelFactory.CreateChannel();
return channel;
}
var binding = BindingFactory.GetBindingX();
var address = new EndpointAddress("endpoint");
Program.GetChannel<IMyInterface>(binding, address);
channel.DoStuff(parameters);
{
var channelFactory=新的channelFactory(绑定,地址);
var channel=channelFactory.CreateChannel();
返回通道;
}
var binding=BindingFactory.GetBindingX();
var地址=新端点地址(“端点”);
Program.GetChannel(绑定,地址);
信道.DoStuff(参数);
所有TSOAP是否都有一个公共基类?@nvoigt不是自定义基类。但是它们都有ClientBase
,这是服务引用生成的默认基类。我想我需要对这个类做些什么,因为它需要一个带参数的构造函数。复制?@JanneMatikainen几乎是,不幸的是,这不是那么容易。我需要创建一个TestSoapClient
的实例,它有一个抽象基类ClientBase
。我需要以一种通用的方式创建一个实例。你不能只使用ChannelFactory?