繁体   English   中英

如何在Autofac上注册singleton

[英]How to register singleton on Autofac

我在.Net Core 2.0 Web应用程序中使用Autofac进行依赖注入。 我是Autofac和依赖注入概念的Autofac

现在,我想在DI注册一个单例并在DI容器中解析它。

C#代码[接口]

public interface IMongoDbContext
    {
        IMongoDatabase Database { get; }
    }

public class MongoDbContext : IMongoDbContext
    {
        public MongoDbContext(string connectionString, string databaseName);

        public string DatabaseName { get; }
        public IMongoDatabase Database { get; }
        public string ConnectionString { get; }
    }

存储库类

public class DemoRepository : IDemoRepository
{
    public DemoRepository(IMongoDataContext context)
    {

    }
}

现在,在.Autofac

    builder.Register(c => new MongoDbContext(dbConnectionString, dataBaseName)).As<IMongoDbContext>().SingleInstance();
    //dbConnectionString and dataBaseName are string variables declared above.

    // and then to Resolve it 
    builder.Register(c => new DemoRepository(c.Resolve<IMongoDbContext>)).As<IDemoRepository>();
// but in above line it shows error at `c.Resolve<IMongoDbContext>`  it shows `cannot convert from 'method group' to 'IMongoDbContext'`

任何人都可以帮我解决这个问题。 我是autofac和依赖注入的新手,我想知道如何在autofac中注册Singleton。

任何帮助将受到高度赞赏...... !!

谢谢

c.Resolve<IMongoDbContext>

应该:

c.Resolve<IMongoDbContext>()

你忘了调用/调用这个函数。

我无法弄清楚,为什么你注入手动IMongoDataContext注册时DemoRepository 它不是反转控制工具的主要目的吗? 我想,你应该改变你的方法;

builder.RegisterType<DemoRepository>().As<IDemoRepository>();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM