C# 调用抽象类型的方法

C# 调用抽象类型的方法,c#,reflection,abstract,invoke,C#,Reflection,Abstract,Invoke,我目前正在与c#一起进行反思,我有一个问题。我尝试调用不同的类类型,可能是抽象的或接口的。所以我不调用这些方法,因为我无法创建实例(显然)。但我对此并不满意 我的问题是:是否有可能以某种方式解决这个问题并创建某个对象的实例,在那里我可以调用给定抽象类类型的方法?有点像创建一个从模板继承的类,然后可以是抽象类型 foreach (MethodInfo m in _classType.GetMethods(bindingFlags)) { if (_cl

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


我的问题是:是否有可能以某种方式解决这个问题并创建某个对象的实例,在那里我可以调用给定抽象类类型的方法?有点像创建一个从模板继承的类,然后可以是抽象类型

    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);
                   }
              }
     }

是的,您可以在运行时动态创建从抽象类型继承的新类,然后调用类上的方法:


您必须确保覆盖所有的抽象方法,否则您的类将必须是抽象的,而您将一无所获。

如果抽象方法在没有定义的情况下不知道该做什么,您希望它做什么?您还提到了接口,如果您试图调用“方法”,您希望发生什么在界面上?如果没有进一步的信息,这个问题真的没有任何意义。我不知道为什么这个问题被否决了,而原来的问题试图做一些可以说是不应该做的事情,这是最合理的解决办法。@TitianCernicova Dragomir是的,我也不理解否决票。那么问题中提到的接口呢?@DavidG同样的技术可以用于两者。ImpromptuInterface做了一些模糊的事情。@john是的,但重点是什么?您还需要实现该方法,如果您正在这样做,为什么还要创建一个新类并准备好调用该方法呢?坦率地说,这个问题毫无意义。