缺少用于操作的程序集
本文关键字:程序集 用于 操作 | 更新日期: 2023-09-27 17:56:58
与
Action<T>
一起使用的程序集是什么?我收到一个错误,说明 T 未被接受,即缺少程序集或命名空间。
Method(delegate { OnChange(); });
private static void MethodUsingOtherMethod(Action<T> action)
{
//TODO
}
如果我在MethodUsingOtherMethod
之后加上一个额外的<T>
,那么 T 被接受,但上面委托中的参数不会被识别。
我想在第二个方法中使用OnChange()
,从那里调用。
您必须将方法声明为泛型方法:
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