调用抽象类型的方法

时间:2017-10-27 09:19:57

标签: c# reflection abstract invoke

我目前正在使用c#进行反思,我有一个问题。我尝试调用可能是抽象或接口的不同类类型。所以我只是不调用那些方法,因为我无法创建一个实例(显然)。但我对此并不满意。

我的问题是:是否有可能以某种方式解决这个问题并创建一个实例,我可以在其中调用给定抽象类类型的方法? Sorta就像创建一个继承自Template的类,然后可以作为抽象类型?

    foreach (MethodInfo m in _classType.GetMethods(bindingFlags))
    {
              if (_classType.IsAbstract || _classType.IsInterface)
              {
                   // only invoke instanciable types
                   MessageBox.Show("Abstract class and Interface cannot be invoked!");
              }
              else
              {
                   var ms = CreateStringFromMethodForCheckedBox(m);
                   if (s == ms)
                   {
                       m.Invoke(Activator.CreateInstance(_classType), null);
                   }
              }
     }

1 个答案:

答案 0 :(得分:1)

是的,您可以在运行时动态创建一个继承自抽象类型的新类,然后调用类上的方法:http://www.c-sharpcorner.com/UploadFile/87b416/dynamically-create-a-class-at-runtime/

你必须确保覆盖所有抽象方法,否则你的类必须是抽象的,你什么都得不到。