我正在尝试将一些 Go 代码转换为 C#。在 Go 中有,例如:type MyType interface{}这是像object在 C# 或MyType<T>?在 Go 代码中,有一个这些接口的数组,每个接口都返回一个带有不同参数的函数。我可以List of Funcs在 C# 中返回,但是动态参数是问题所在。我在用 C# 表示这个时遇到了问题。需要一些指导才能找到正确的道路。
1 回答
智慧大石
TA贡献1946条经验 获得超3个赞
到目前为止,最好的选择是完全避免这种情况。与其同时接受委托和调用时应传递给它的参数列表,不如要求所有委托都无参数(即Action
)。然后调用者有责任,如果他们希望使用一组给定的参数运行一个方法,将它包装在一个无参数的方法中,该方法使用一组固定的参数调用给定的函数。在大多数情况下,这可以使用 lambda 方便地完成,因此这对调用者来说不是一个繁琐的请求;事实上,通常比指定函数和参数列表更容易。
您的方法签名然后变为:
public void Foo(Action action) {}
对于调用者来说,它将是:
Foo(() => SomeMethod(firstArgument, secondArgument));
然后List<Action>
,您可以从那些您可以轻松调用的操作中创建一个,而不会搞乱反射或动态类型。此解决方案保持对所有函数及其参数的完全编译时检查,因此您无需担心处理提供的无效参数。
- 1 回答
- 0 关注
- 252 浏览
添加回答
举报
0/150
提交
取消