如何使用反射调用接口中的方法



我有一个类,该类"class1"正在实现接口1

我需要使用反射来调用类中的一个方法。

我不能按原样使用类名和接口名,因为这两个名称都会动态更改

interface1 objClass = (interface1 )FacadeAdapterFactory.GetGeneralInstance("Class"+ version);

请参阅上面的代码片段。类名和接口名称应根据其版本而更改。我已经使用为类创建了实例

Activator.CreateInstance(Type.GetType("Class1"))

但我不能为接口做同样的事情

有什么方法可以实现上面的上下文吗。

您不能创建接口的实例,只能创建实现接口的类。有一些方法可以从接口中提取方法(信息)。

ISample element = new Sample();
Type iType1 = typeof(ISample);
Type iType2 = element.GetType().GetInterfaces()
    .Single(e => e.Name == "ISample");
Type iType3 = Assembly.GetExecutingAssembly().GetTypes()
    .Single(e => e.Name == "ISample" && e.IsInterface == true);
MethodInfo method1 = iType1.GetMethod("SampleMethod");
MethodInfo method2 = iType2.GetMethod("SampleMethod");
MethodInfo method3 = iType3.GetMethod("SampleMethod");
method1.Invoke(element, null);
method2.Invoke(element, null);
method3.Invoke(element, null);

我希望这已经足够了。

相关内容

  • 没有找到相关文章

最新更新