与Action<T>
一起使用的程序集是什么?我收到一个错误,T没有被接受,缺少一个程序集或命名空间。
Method(delegate { OnChange(); });
private static void MethodUsingOtherMethod(Action<T> action)
{
//TODO
}
如果我在<T>
之后添加额外的MethodUsingOtherMethod
,则接受T,但之后上述代理中的参数无法识别。
我想在第二种方法中使用OnChange()
,从那里调用。
答案 0 :(得分:3)
您必须将方法声明为通用方法:
private static void MethodUsingOtherMethod<T>(Action<T> action)
{
//TODO
}
编辑:顺便说一下,如果你需要传入的委托来获取类型T的参数,你只需要这样做。如果你需要传入一个无参数方法,那么定义你的方法如下:
private static void MethodUsingOtherMethod(Action action)
{
//TODO
}
答案 1 :(得分:1)
Action<T>
表示您需要传递一个委托,接受类型为T的1个参数。因此,如果要传递OnChange,则只需指定Action
而不指定T.
这样,您的代码将如下所示:
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