gpt4 book ai didi

c# - 具有动态类型数量的通用类

转载 作者:太空狗 更新时间:2023-10-29 20:54:34 24 4
gpt4 key购买 nike

我不知道如何在不使用示例的情况下表达这个问题,所以我们开始...

我定义了这样一个类:

public class Orchestration<T1, T2, T3>
{

使用这个构造函数:

public Orchestration(Action<T1, T2, T3> action, int maxNumberOfRetries)

还有一个名为 Run 的方法:

public bool Run(T1 one, T2 two, T3 three)

现在,如果我这样做:

var orchestration = new Orchestration<string, string, bool>(File.Copy, 5);
orchestration.Run("c:\filename.txt", "d:\filename.txt", true)

然后编排将在返回 false 之前尝试运行 File.Copy 5 次,这意味着作业失败(这里的背景是我试图从一个只偶尔工作的磁盘中拯救 som 文件)

Orchestration 类是通用的,我可以用它来运行任何具有三个参数的方法。

我的问题是:我能否以不需要预先确定参数数量的方式定义 Orchestration-class?

我的目标是让它能够运行任何方法,而不仅仅是采用三个参数的方法...

最佳答案

在 C# 中无法使用泛型执行此操作。这将需要类似于 variadic templates in C++ 的东西,但在托管世界中没有等效项。这就是为什么类 Tuple有这么多不同的类和工厂方法来创建各种版本。

如果您的参数不是通用的(即:object)或始终是字符串,您可以使用 params允许可变数量的参数。

关于c# - 具有动态类型数量的通用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23161308/

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