2011-01-14 32 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 2011-01-14 10:45:02

+0

很高兴我能提供一个答案! (眨眼睛;) – 2011-01-14 10:46:41

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;