gpt4 book ai didi

c# - 实现此业务规则的最佳位置?

转载 作者:太空宇宙 更新时间:2023-11-03 11:18:28 24 4
gpt4 key购买 nike

我有一个服务调用返回给我一个 CustomObject 的 IEnumerable,这是一个第三方调用,我无权修改。可以假定 CustomObject 具有如下定义:

public class CustomObject
{
public int Id { get; set; }
public string Name { get; set; }

...
...
...

public int Points { get; set; }
public bool IsPrivate { get; set; }
}

在返回的对象列表中,我可以有特殊的 CustomObject 对象。我需要实现一些特殊规则,例如:

  1. 如果列表中同时存在Id为1和3的元素,则根据规则只渲染其中一个 A。如果其中任何一个将 IsPrivate 标记为 true,则显示将 IsPrivate 设置为 false 的那个 b.如果两者都没有将 IsPrivate 设置为 true,则显示得分较高的那个 ...等等

实现这些规则的最佳地点是什么。我考虑过实现 IEqualityComparer 并在我的服务调用中执行 .Distinct() ,这似乎不是 IEqualityComparer 的目的。

建议?

最佳答案

由于您不能修改“CustomObject”类,我会将业务逻辑添加到“渲染”管道中,然后调用一些函数,例如下面您有适用的特定业务规则的地方。然后只需从要呈现的对象列表中删除 id1 和 id3 并仅呈现从以下函数返回的对象。

CustomObject BizRule3293(IEnumerable<CustomObject> objects)
{
CustomObject id1 = objects.SingleOrDefault(t => t.Id == 1);
CustomObject id3 = objects.SingleOrDefault(t => t.Id == 3);
if (id1 != null && id3 !=null)
{
if (!id1.IsPrivate && !id3.IsPrivate)
return id1.Points > id3.Points ? id1 : id3;

return id1.IsPrivate ? id3 : id1;
// No logic stated if both are private
}

return id1 ?? id3;
}

关于c# - 实现此业务规则的最佳位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11867028/

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