Создавайте динамические прокси на System.Type - PullRequest
0 голосов
/ 19 сентября 2011

У меня List<Type>, здесь Тип - интерфейс, который я получил, используя отражение. Итак, как создать прокси wcf с использованием фабрики каналов на этих типах.

нравится:

foreach(Type t in types)
{
t proxy = ChannelFactory<t>.CreateChannel(new NetTcpBinding(), 
             new EndpointAddress(serviceAddress));
}

Здесь t - интерфейс, но приведенный выше код выдает ошибку компилятора. Может кто-нибудь сказать мне, как создать прокси службы wcf для Type.

1 Ответ

3 голосов
/ 19 сентября 2011

Вы можете использовать отражение и вызвать метод 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...