我目前正尝试使用(可能)C#的Func或Action类型处理lambda。
我想创建一个名为IMyInterface的接口,它定义了一个名为CreateCRUD的方法。这应该采取5个参数。第一个是字符串。接下来的四个是调用创建,读取,更新和删除方法的函数。
interface IMyInterface
{
void CreateCRUD(string name, Action<void> createFunc, Action<void> readFunc, Action<void> updateFunc, Action<void> deleteFunc);
}
四个函数定义不应该没有参数,也不返回任何参数。上面的代码不能编译。请指出我正确的方向。
答案 0 :(得分:4)
改为使用非通用Action
。
interface IMyInterface
{
void CreateCRUD(string name, Action createFunc, Action readFunc, Action updateFunc, Action deleteFunc);
}
答案 1 :(得分:1)
封装具有单个参数但不返回的方法 价值。
因此,您尝试使用void
类型的一个参数强制委托。
您需要做的就是使用Action
而不使用类型:
interface IMyInterface
{
void CreateCRUD(string name, Action createFunc, Action readFunc, Action updateFunc, Action deleteFunc);
}
如果您想在代理中强制参数类型,那么您可以使用Action<T>
,例如Action<int>
,其中表示带有int
参数的方法。
答案 2 :(得分:0)
像
这样的东西Public delegate Action<T> MyActionDelegate;
interface IMyInterface
{
void CreateCRUD(string name, MyActionDelegate createFunc, MyActionDelegate readFunc, MyActionDelegate updateFunc, MyActionDelegate deleteFunc);
}