传递延迟函数作为参数

时间:2015-06-27 13:25:16

标签: c# .net entity-framework-6

最近几天我正试图找到一种方法来实现这个结果之王。 我有实体框架功能

_context.Playlists.Find(playlistId)

播放列表 - 是我的实体Dbset。

查找() - 查找具有给定主键值的实体(如果找到),附加到上下文并返回。如果在上下文或商店中找不到实体,则返回null。

playlistId - 我正在寻找的播放列表ID。

当然我可以在每个函数中检查它,但是我有很多这样的函数,我使用Find()和各种实体,所以我想保持代码干净而不重复逻辑。

我想编写一个函数来检查它是否为null。 基本上我想做的是:

MethodToCheckIfNotNull(_context.Playlists.Find(playlistId));

因此,如果它为null,则会抛出异常,如果它不为null,则返回Entity。 任何人都可以提供一个例子,我该如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

据我了解,您正在寻找像这样的generic method

public T MethodToCheckIfNotNull<T>(Func<T> function) where T : class {
 var entity = function();
 if(entity == null) throw new MyException();
 return entity;
}

此方法接受通用Func,它可以以懒惰的方式执行。

使用:

var notNull = MethodToCheckIfNotNull(() => _context.Playlists.Find(playlistId));