gpt4 book ai didi

c# - 将模型传入和传出服务层

转载 作者:行者123 更新时间:2023-11-30 16:18:59 24 4
gpt4 key购买 nike

假设我有一个模型:

public class Thing
{
public int? identifier { get; set; }
public string Title { get; set; }
public string Description { get; set; }
... // arbitrary number of additional properties.
}

以及包含两个关键方法的服务层接口(interface):

public interface IThingService
{
Thing GetThing(int id);
Thing AddThing(Thing thing);
}

现在,假设服务层将在 AddThing 上为每个事物自动生成一个 identifier。还假设将此 identifier 公开给表示层很重要,因为它可能会传递给其他服务。

考虑到我必须将 Thing 传递给 AddThing,这是建模 Thing 的最佳方式吗?表现层的开发者可能认为他们可以指定一个identifer,但这会被IThingService的具体实现所忽略。当然,identifier 必须是公开的,才能由 IThingServiceGetThing 设置。

是否可以简单地忽略调用 AddThing 时传递的 identifier,或者是否有更好的方法对此进行建模以防止那会发生吗?

最佳答案

您的服务应如下所示:

public interface IThingService
{
Thing GetThing(int id);
ThingCreationResponse AddThing(ThingCreationRequest request);
}

ThingCreationRequest 将拥有创建 Thing 实体所需的所有数据。它不会有标识符。 AddThing 将返回标识符。

AddThing 可以简单地返回一个 Thing id,但在这种情况下,您应该提供一个记录良好的协议(protocol)来传达错误(在失败的情况下返回负值,或抛出异常)。

返回 ThingCreationResponse 的实例将为您提供更好的灵 active ,因为您可以返回新 Thing 的 ID 或完整实例,也可以传达失败原因更好。

关于c# - 将模型传入和传出服务层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15588325/

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