【发布时间】:2014-07-15 17:44:38
【问题描述】:
我有这个代码
public static class FallbackUtils<TResult, TRequest>
where TRequest : IFallbackRequest
{
public static IEnumerable<TResult> GetAllValues(TRequest request,
Func<TRequest, TResult> callback)
{
yield return callback(request);
while (request.CanFallback())
{
request.Fallback();
yield return callback(request);
}
}
}
有时 TResult 将是一个 IEnumerable。在这些情况下,我希望不仅可以保留 null 集合,还可以不返回空集合。问题是我不知道如何询问 TResult 是否为空我只知道如何询问它是否为空。 像这样的
public static IEnumerable<TResult> GetAllValues(TRequest request,
Func<TRequest, TResult> callback, bool ignoreNullOrEmpty = false)
{
var item = callback(request);
if (ignoreNullOrEmpty)
{
if (item != null && item.Any())
yield return item;
}
else
yield return item;
while (request.CanFallback())
{
request.Fallback();
item = callback(request);
if (ignoreNullOrEmpty)
{
if (item != null && item.Any())
yield return item;
}
else
yield return item;
}
}
我想在这个方法中进行过滤,以清理大量重复的代码。
关于我应该做什么或我做错了什么有什么想法吗? 提前致谢。
【问题讨论】: