I may be trying to do something that can't be done (or "shouldn't" be
done), but here goes.
I'm trying to construct a generalized method for creating a client-side
factory channel using WCF. So that I can pass it any one of dozens of
interface contracts, and the method will pump out a proxy.
So essentially, I want to do this...
public T GetGeneralFactoryChannel<T>(T interfaceType)
{
Binding myBinding = new WSHttpBinding();
ChannelFactory<ToChannelFactory = new ChannelFactory<T>(myBinding);
oChannelFactory.Endpoint.Address = new
EndpointAddress("http://MyServer//testwcf/service.svc");
T MyProxyChannel = oChannelFactory.CreateChannel();
return MyProxyChannel;
}
And then I can call it like so:
IMyContract MyContract;
MyContract = (IMyContract)GetGeneralFactoryChannel(typeof(IMyCo ntract));
MyContract.CallSomeMethod();
The problem is that I get errors when the code tries to create a channel
factory..."The type argument passed to the generic ChannelFactory class
must be an interface type".
I tried using MakeGenericType, but that didn't help.
So anyway, has anyone tried to do something similar? (using
ChannelFactory inside something generic, so that you could pass any
contract interface?)
I was hoping to avoid reflection or Activator.GetObject, but if that's
the only way to get this to work...
Feel free to suggest an alternate approach....
Thanks,
Kevin