如何在 C# 中表示 Golang 的接口{}?

我正在尝试将一些 Go 代码转换为 C#。在 Go 中有,例如:

type MyType interface{}

这是像object在 C# 或MyType<T>?

在 Go 代码中,有一个这些接口的数组,每个接口都返回一个带有不同参数的函数。

我可以List of Funcs在 C# 中返回,但是动态参数是问题所在。

我在用 C# 表示这个时遇到了问题。需要一些指导才能找到正确的道路。


Helenr
浏览 253回答 1
1回答

智慧大石

到目前为止,最好的选择是完全避免这种情况。与其同时接受委托和调用时应传递给它的参数列表,不如要求所有委托都无参数(即Action)。然后调用者有责任,如果他们希望使用一组给定的参数运行一个方法,将它包装在一个无参数的方法中,该方法使用一组固定的参数调用给定的函数。在大多数情况下,这可以使用 lambda 方便地完成,因此这对调用者来说不是一个繁琐的请求;事实上,通常比指定函数和参数列表更容易。您的方法签名然后变为:public&nbsp;void&nbsp;Foo(Action&nbsp;action)&nbsp;{}对于调用者来说,它将是:Foo(()&nbsp;=>&nbsp;SomeMethod(firstArgument,&nbsp;secondArgument));然后List<Action>,您可以从那些您可以轻松调用的操作中创建一个,而不会搞乱反射或动态类型。此解决方案保持对所有函数及其参数的完全编译时检查,因此您无需担心处理提供的无效参数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go