我有以下代码:
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/