如何在Autofac

时间:2017-12-11 08:54:47

标签: c# asp.net-mvc-4 dependency-injection singleton autofac

我在Autofac网络应用程序中使用.Net Core 2.0进行依赖项注入。我是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。

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

谢谢

2 个答案:

答案 0 :(得分:3)

c.Resolve<IMongoDbContext>

应该是:

c.Resolve<IMongoDbContext>()

您忘记调用/调用该函数。

答案 1 :(得分:0)

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

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