gpt4 book ai didi

c# - dotnet 返回 2 种类型中的 1 种

转载 作者:行者123 更新时间:2023-12-03 19:22:17 25 4
gpt4 key购买 nike

我有一个简单的方法设置来创建条目,如果成功,则返回创建的条目。如果不是,则返回 ValidationError。

public async Task<MyNewEntry> CreateEntry(MyUser user, MyEntryRequest entry)

如果条目有效,则效果很好。但是,如果验证失败,我想返回 ValidationError。

我尝试这样做:

public async Task<MyNewEntry | ValidationError> CreateEntry(MyUser user, MyEntryRequest entry)

但是它无法编译。如何构造此方法,以便它能够返回 MyNewEntryValidationError

最佳答案

为此,您可以使用结果类型,它由属性“bool Success”和错误以及 Entry 属性组成,其中始终只有一个属性填充值,具体取决于您的成功方法。

public class CreateEntryResult
{
public bool Success {get;set;}
public MyNewEntry Entry {get;set;}
public ValdidationError Error {get;set;}
}

为了节省一些内存(您将在每个结果上创建一个附加对象),您还可以返回一个结构。只需将代码中的“class”关键字替换为“struct”即可。然后,包含的引用将作为值传递,您不必考虑对垃圾收集的任何影响。

执行此操作的另一种方法是“Try”模式,近年来我很少看到这种方法,在该模式中,您返回结果类型(通常是 bool)并使用输出参数返回您的值。我不确定输出参数如何与异步一起工作。

bool TryCreateEntry(..., out MyNewEntry entry, out ValidationError error)

关于c# - dotnet 返回 2 种类型中的 1 种,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53463293/

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