C# 缺少用于操作的组件

C# 缺少用于操作的组件,c#,.net,.net-assembly,C#,.net,.net Assembly,动作时使用的部件是什么?我在T未被接受时遇到一个错误,即缺少程序集或命名空间 Method(delegate { OnChange(); }); private static void MethodUsingOtherMethod(Action<T> action) { //TODO } 如果我在MethodUsingThermethod后面加了一个额外的后缀,那么T被接受,但是上面委托中的参数不被识别 我想在第二个方法中使用OnChange

动作时使用的部件是什么?我在T未被接受时遇到一个错误,即缺少程序集或命名空间

Method(delegate { OnChange(); });


    private static void MethodUsingOtherMethod(Action<T> action)
    {
      //TODO
    }
如果我在MethodUsingThermethod后面加了一个额外的后缀,那么T被接受,但是上面委托中的参数不被识别


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

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

private static void MethodUsingOtherMethod<T>(Action<T> action)
    {
      //TODO
    }
Action意味着您需要传递一个接受类型为T的1个参数的委托。因此,如果您想传递OnChange,那么您可以只指定Action而不指定T

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

MethodUsingOtherMethod(OnChange);


private static void MethodUsingOtherMethod(Action action)
{
  //TODO
}
您没有被识别的错误是,因为您没有将方法声明为泛型方法,而是将。因此,编译器没有将t识别为类型参数,并试图查找不存在的名为t的类型

您可能希望查找泛型以了解那里发生了什么:

参考mscorlib并使用系统添加。但是每个程序都引用mscorlib。把你的问题写得更连贯一点怎么样?也许还可以添加一个代码示例来展示这个问题;我是不是忽略了什么?你知道这取决于什么吗?这是我拥有的与问题相关的代码?@CodeInChaos从技术上讲,在项目的预先设置中删除对mscorlib的引用是可能的,但是我看不出有什么原因。如果我使用上面最上面的一个,我必须改变我的OnChange;属于T型。方法可以属于T型吗?因为我想把它传递给代理。从您的代码片段中可以看出,您不需要将参数传递给该方法,所以请使用第二个方法定义,它与Botz3000的sPerfect相同,这就是我想要的!谢谢你的解释。我认为该方法算作一个参数,但我看到它本身只是一个动作。将研究泛型!
MethodUsingOtherMethod(OnChange);


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