我正在尝试将一些 Go 代码转换为 C#。在 Go 中,例如:
type MyType interface{}
这是类似object
的东西吗?在 C# 或 MyType<T>
?
在 Go 代码中,有一个由这些接口(interface)组成的数组,每个接口(interface)都返回一个具有不同参数的函数。
我可以返回List of Funcs
在 C# 中,但动态参数是问题所在。
我在用 C# 表示它时遇到问题。需要一些指导才能找到正确的路径。
最佳答案
到目前为止,最好的选择是完全避免这种情况。与其同时接受委托(delegate)和调用时应传递给它的参数列表,不如要求所有委托(delegate)都是无参数的(即 Action
)。然后调用者有责任,如果他们希望使用给定的参数集运行一个方法,将其包装在一个无参数的方法中,该方法使用一组固定的参数调用给定的函数。在大多数情况下,这可以使用 lambda 方便地完成,因此这对调用者来说不是一个繁重的请求;事实上,通常更容易它们然后指定一个函数和一个参数列表。
然后您的方法签名变为:
public void Foo(Action action) {}
对于调用者来说,它将是:
Foo(() => SomeMethod(firstArgument, secondArgument));
然后你可以制作一个List<Action>
从那些您可以轻松调用的操作中,而无需使用反射或动态类型。该解决方案维护所有函数及其参数的完整编译时检查,因此您无需担心处理提供的无效参数。
关于c# - 我如何在 C# 中表示 Golang 的接口(interface){}?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21142608/