在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服务代理类型。

在System.Type上创建动态代理

您可以使用反射并调用方法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);
}
相关文章: