为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
Helenr 2021-07-10 14:10:32
我正在尝试将一些 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>,您可以从那些您可以轻松调用的操作中创建一个,而不会搞乱反射或动态类型。此解决方案保持对所有函数及其参数的完全编译时检查,因此您无需担心处理提供的无效参数。


查看完整回答
反对 回复 2021-07-19
  • 1 回答
  • 0 关注
  • 252 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信