在System.Type上创建动态代理
本文关键字:动态 代理 创建 System Type | 更新日期: 2023-09-27 18:08:54
我有List<Type>
,这里类型是我使用反射得到的接口。那么如何在这些类型上使用通道工厂创建wcf代理呢?
:
foreach(Type t in types)
{
t proxy = ChannelFactory<t>.CreateChannel(new NetTcpBinding(),
new EndpointAddress(serviceAddress));
}
这里是接口,但上面的代码是编译错误。谁能告诉我如何创建wcf服务代理类型。
您可以使用反射并调用方法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);
}