gpt4 book ai didi

c# - 处理一批元素,返回一个对象来报告状态

转载 作者:行者123 更新时间:2023-11-30 22:45:38 24 4
gpt4 key购买 nike

我正在为以下场景寻找模式(或良好实践):

我的函数 List<BatchItemResponse> Process(List<BatchItem> Data) {..}将处理数据列表,并返回有关可以处理批处理中每个项目的位置的信息。

struct BatchItemResponse { int BatchItemID; bool Processed; string Description; }

有什么想法吗?我提出的建议是否与实际情况一样好?

最佳答案

您可以完全按照您的建议进行 - 它会很好地工作。但由于您在谈论模式,因此有一些潜在的优雅可能性,具体取决于您的目标。

您可以使用迭代器模式(.NET 可爱的枚举器巧妙地隐藏了其细节):

IEnumerable<BatchItemResponse> Process(List<BatchItem> Data)
{
foreach (BatchItem item in Data)
{
BatchItemResponse result = new BatchItemResponse();
result.Processed = ProcessItem(item);
yield return result;
}
}

或者您可以通过触发事件让感兴趣的观察者订阅来使用观察者模式:

public class EventArgs<T> : EventArgs
{
public EventArgs(T value)
{
m_value = value;
}

private T m_value;

public T Value
{
get { return m_value; }
}
}

public event EventHandler<EventArgs<BatchItemResponse> ItemProcessed;

public void Process(List<BatchItem> Data)
{
foreach (BatchItem item in Data)
{
BatchItemResponse result = new BatchItemResponse();
result.Processed = ProcessItem(item);
if (ItemProcessed != null)
{
ItemProcessed(this, new EventArgs<BatchItemResponse>(result));
}
}
}

这两种模式的优点在于,如果使用得当,它们可以让您实时更新状态,而不是等待处理整个 BatchItems 列表。

关于c# - 处理一批元素,返回一个对象来报告状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2958941/

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