gpt4 book ai didi

wcf - 动态构建 ChannelFactory

转载 作者:行者123 更新时间:2023-12-04 07:03:10 26 4
gpt4 key购买 nike

我正在尝试动态创建 ChannelFactory :

var serviceType = GetServiceProxy();
var interfaceType = serviceType.GetServiceInterface(); //return IServiceInterface
var service = new ChannelFactory(binding, address);

如您所见,问题是在第二行,我没有泛型类型,不幸的是,ChannelFactory 没有接受该类型的重载。

有什么办法吗??

最佳答案

发现我只能通过反射来做到这一点。当然,您还必须使用反射调用方法。

创建“ChannelFactory”并调用“CreateChannel”方法:

private ChannelFactory CreateChannelFactory()
{
var channelFactoryType = typeof (ChannelFactory);

channelFactoryType = channelFactoryType.MakeGenericType(serviceType);

return (ChannelFactory)Activator.CreateInstance(channelFactoryType, binding, address);
}

private object CreateChannel()
{
var createchannel = channelFactory.GetType().GetMethod("CreateChannel", new Type[0]);
return createchannel.Invoke(channelFactory, null);
}

现在 channel 已创建,但由于只有接口(interface)类型可用,我只能获取要调用的方法:

var serviceType = service.GetType();
var remoteMethod = service.GetMethod(invocation.Method.Name);

remoteMethod.Invoke(service, invocation.Arguments);

关于wcf - 动态构建 ChannelFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1516433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com