2011-01-14 4 views
0

У меня проблема с литьем/типами и т. Д.Использование методов объекта без литья

Во-первых, мой запрос является продолжением с другого поста здесь: Initialize generic object from a System.Type

так продолжать дальше от этого вопроса, как я могу использовать методы моего вновь созданного объекта?

то, что я хочу сделать, это выглядит следующим образом:

Type iFace = typeof(IService1); 
Type genericListType = typeof(System.ServiceModel.ChannelFactory<>).MakeGenericType(iFace); 
object factory = Activator.CreateInstance(genericListType, new object[] 
        { 
         new BasicHttpBinding(), 
         new EndpointAddress("http://localhost:1693/Service.svc") 
        }); 
var channel = factory.CreateChannel(); 

кстати, хотя я использую это приложение для WCF, это не проблема WCF

ответ

2

Попробуйте использовать dynamic object? Это позволяет вам вызывать методы, которые могут или не могут существовать.

+0

Слишком просто человек, спасибо много. – Shane

+0

Рад, что я мог бы дать ответ! (wink wink;) –

2

Без динамических объектов:

object factory = Activator.CreateInstance(genericListType, new object[] 
{ 
    new BasicHttpBinding(), 
    new EndpointAddress("http://localhost:1693/Service.svc") 
}); 

Type factoryType = factory.GetType(); 
MethodInfo methodInfo = factoryType.GetMethod("CreateChannel"); 
var channel = methodInfo.Invoke(factory) as YourChannelType; 
+0

Также хорошо, приветствия – Shane

Смежные вопросы