我有以下代码:

public void generate()
{
  base.generateFoo(Method); // How can i indicate the type here?
}

public void Method<T>(T t , IDictionary<T, SomeObject> coll) : where T : ISomething
{
 // do something
}


class MyBase
{
  public void generateFoo<T>(Action<T, IDictionary<T, SomeObject>> Method) : where T : ISomething
  {
     Method.invoke(ObjectThatImplementsT, DictionaryWIthTKey);
  }
}


我收到类似无法将ObjectThatImplementsT转换为T的错误。

我可以将通用方法作为其他方法的参数吗?

这是什么问题?

谢谢。

最佳答案

您可能只需要指定类型:

public void generate()
{
   base.generateFoo<YourType>(Method);
}


话虽如此-由于generateFoo既不是泛型方法也不在泛型类中,因此上述代码无法编译,因此上述代码可能无法正常工作。假定generateFoo被定义为通用方法(采用类型T)。

关于c# - 泛型和 Action 委托(delegate),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5463753/

10-10 10:10