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