c# - 泛型和 Action 委托(delegate)

标签 c# .net generics delegates action

我有以下代码:

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/

相关文章:

c# - 为什么通过反射查询程序集的类型会导致程序在调试时意外挂起?

.net - 线程试图读取或写入它没有适当访问权限的虚拟地址

c# - 将 Windows 窗体设置为最底部

.net - 尽职调查 : Considering Octopus Deploy, 可以使用 System Center 代替吗?

java - 为什么从接口(interface)执行方法时会将参数转换为 Object(或扩展 YourObject)?

java - 一种创建接口(interface)扩展比较器接口(interface)的方法,该接口(interface)仅比较当前子类

java - 泛型中的数组类型

c# - 有没有办法计算开机后的秒数?

c# - 输入整数?与类型 int

C# 非通用 ISet 接口(interface)