加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ServiceStack – 依赖似乎不会被注入?

发布时间:2020-12-14 04:55:11 所属栏目:百科 来源:网络整理
导读:我有以下存储库类: public class RepositoryT : IDisposable where T : new(){ public IDbConnectionFactory DbFactory { get; set; } //Injected by IOC IDbConnection db; IDbConnection Db { get { return db ?? (db = DbFactory.Open()); } } public Re
我有以下存储库类:

public class Repository<T> : IDisposable where T : new()
{
    public IDbConnectionFactory DbFactory { get; set; } //Injected by IOC
    IDbConnection db;
    IDbConnection Db
    {
        get
        {
            return db ?? (db = DbFactory.Open());
        }
    }

    public Repository()
    {
        Db.DropAndCreateTable<T>();
    }

    public List<T> GetByIds(long[] ids)
    {
        return Db.Ids<T>(ids).ToList();
    }
}

然后在我的AppHost.Configure()中.我像这样注册依赖:

container.Register<IDbConnectionFactory>(c => 
            new OrmLiteConnectionFactory(ConfigurationManager.
       ConnectionStrings["AppDb"].ConnectionString,SqlServerDialect.Provider));

container.RegisterAutoWired<Repository<Todo>>().ReusedWithin(Funq.ReuseScope.None);

但是当我运行我的应用程序时,似乎我的DbFactory为null并且没有正确注入,因为我得到了Null Reference异常.

解决方法

尝试访问构造函数中的任何依赖项时它将为null,因为在IOC有机会注入任何依赖项之前启动了该类.

我会将任何初始化/设置逻辑移出到AppHost.Configure()中,例如:

using (var db = container.Resolve<IDbConnectionFactory>().Open())
{
    db.DropAndCreateTable<MyType>();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读