我有List<Type>
,这里Type是我使用反射的界面。
那么如何使用这些Type上的channnel工厂创建wcf代理。
喜欢:
foreach(Type t in types)
{
t proxy = ChannelFactory<t>.CreateChannel(new NetTcpBinding(),
new EndpointAddress(serviceAddress));
}
这里是接口,但上面的代码给出了编译错误。任何人都可以告诉我如何在Type上创建wcf服务代理。
答案 0 :(得分:3)
您可以使用反射并调用方法Type.MakeGenericType
:
foreach (Type t in types)
{
Type genType = typeof(ChannelFactory<>).MakeGenericType(t);
MethodInfo createChannelMethod = genType.GetMethod("CreateChannel",
new[] { typeof(Binding),
typeof(EndpointAddress) });
var proxy = createChannelMethod.Invoke(
null,
BindingFlags.Static,
null,
new object[] {
new NetTcpBinding(),
new EndpointAddress(serviceAddress)
},
null);
}