C# 创建泛型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>

通常我会像这样实例化一个SoapClient:

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?