使用对象的方法而不进行强制转换

时间:2011-01-14 10:40:08

标签: c# reflection types casting generics

我有关于转换/类型等问题。

首先,我的查询来自另一篇文章: 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 个答案:

答案 0 :(得分:2)

尝试使用dynamic object?这允许您调用可能存在或可能不存在的方法。

答案 1 :(得分: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;