缺少用于操作的程序集

本文关键字:程序集 用于 操作 | 更新日期: 2023-09-27 17:56:58

Action<T>一起使用的程序集是什么?我收到一个错误,说明 T 未被接受,即缺少程序集或命名空间。

Method(delegate { OnChange(); });

    private static void MethodUsingOtherMethod(Action<T> action)
    {
      //TODO
    }

如果我在MethodUsingOtherMethod之后加上一个额外的<T>,那么 T 被接受,但上面委托中的参数不会被识别。

我想在第二个方法中使用OnChange(),从那里调用。

缺少用于操作<T>的程序集

您必须将方法声明为泛型方法:

private static void MethodUsingOtherMethod<T>(Action<T> action)
    {
      //TODO
    }

编辑:顺便说一下,只有当你需要传入的委托采用T类型的参数时,你才需要这样做。如果需要传入无参数方法,请按如下方式定义方法:

private static void MethodUsingOtherMethod(Action action)
    {
      //TODO
    }

Action<T>意味着您需要传递一个接受 1 个类型 T 参数的委托。因此,如果要传递 OnChange,则可以指定不带 T 的Action

这样,您的代码将如下所示:

MethodUsingOtherMethod(OnChange);

private static void MethodUsingOtherMethod(Action action)
{
  //TODO
}

您得到的关于无法识别 T 的错误是,因为您没有将方法声明为泛型方法(通过将<T>放在方法名称后面来完成)。因此,编译器没有将 T 识别为类型参数,并尝试查找名为 T 的类型,该类型不存在。

您可能想要查找泛型以了解那里发生了什么:
http://msdn.microsoft.com/en-us/library/ms379564(v=vs.80).aspx