你可以完全按照你的建議 - 它會工作得很好。但是既然你正在談論模式,根據你的目標是什麼,有一些潛在的高雅可能性。
你可以使用迭代器模式(其中的細節都整齊地隱藏起來,通過.NET的可愛統計員):
IEnumerable<BatchItemResponse> Process(List<BatchItem> Data)
{
foreach (BatchItem item in Data)
{
BatchItemResponse result = new BatchItemResponse();
result.Processed = ProcessItem(item);
yield return result;
}
}
或者你可以通過射擊有興趣的觀察員訂閱事件使用Observer模式:
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 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的整個列表進行處理。
您提出了一個解決方案,但沒有說明問題。如果您的解決方案符合您的問題,則有點難以確定:-) – dtb 2010-06-02 15:05:16
上述問題沒有問題,我只是在尋找最佳解決方案。 – 2010-06-02 15:38:47
最好的解決方案是什麼?如果您需要返回ID,說明以及是否爲每個批次項目處理了批次項目,那麼您已經找到了最佳解決方案:-) – dtb 2010-06-02 15:40:50