【问题标题】:Passing lazy function as parameter传递惰性函数作为参数
【发布时间】:2015-06-27 13:25:16
【问题描述】:

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

_context.Playlists.Find(playlistId)

播放列表 - 是我的实体数据库。

Find() - 如果找到具有给定主键值的实体,则将其附加到上下文并返回。如果在上下文或存储中没有找到实体,则返回 null。

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

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

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

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

因此,如果它为 null,它将抛出异常,如果它不为 null,它将返回 Entity。 任何人都可以提供一个例子我怎么能做到这一点?

【问题讨论】:

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


    【解决方案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));
    

    【讨论】:

    • 谢谢伙计,你真的很有帮助。过去 2 天我一直在寻找这个解决方案。上帝保佑你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多