0

我目前正在尝试使用(可能)C# 的 Func 或 Action 类型来处理 lambdas。

我想创建一个名为 IMyInterface 的接口,它定义了一个名为 CreateCRUD 的方法。这应该采用 5 个参数。第一个是字符串。接下来的四个是调用创建、读取、更新和删除方法的函数。

interface IMyInterface
{
    void CreateCRUD(string name, Action<void> createFunc, Action<void> readFunc, Action<void> updateFunc, Action<void> deleteFunc);
}

四个函数定义应该不带参数并且不返回任何内容。上面的代码无法编译。请指出我正确的方向。

4

3 回答 3

5

请改用非泛型Action

interface IMyInterface
{
    void CreateCRUD(string name, Action createFunc, Action readFunc, Action updateFunc, Action deleteFunc);
}
于 2012-09-26T15:19:44.620 回答
1

Action<T>

封装具有单个参数且不返回值的方法。

因此,您正在尝试使用一个类型的参数强制委托void

您需要做的就是Action不带类型使用:

interface IMyInterface
{
    void CreateCRUD(string name, Action createFunc, Action readFunc, Action updateFunc, Action deleteFunc);
}

如果你想在你的委托中强制使用参数类型,那么你应该使用Action<T>eg Action<int>,这意味着带有int参数的方法。

于 2012-09-26T15:20:52.700 回答
0

就像是

Public delegate Action<T> MyActionDelegate;

interface IMyInterface 
{     
void CreateCRUD(string name, MyActionDelegate createFunc, MyActionDelegate readFunc, MyActionDelegate updateFunc, MyActionDelegate deleteFunc); 
} 
于 2012-09-26T15:24:34.057 回答