gpt4 book ai didi

c# - 我如何在 C# 中表示 Golang 的接口(interface){}?

转载 作者:数据小太阳 更新时间:2023-10-29 03:17:43 25 4
gpt4 key购买 nike

我正在尝试将一些 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com