如何在Autofac上注册单例

pro*_*011 4 c# singleton dependency-injection autofac asp.net-mvc-4

Autofac在我的网络应用程序中使用依赖注入.Net Core 2.0。我对Autofac依赖注入概念很陌生。

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

C# 代码 [接口]

public interface IMongoDbContext
    {
        IMongoDatabase Database { get; }
    }
Run Code Online (Sandbox Code Playgroud)

班级

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

        public string DatabaseName { get; }
        public IMongoDatabase Database { get; }
        public string ConnectionString { get; }
    }
Run Code Online (Sandbox Code Playgroud)

存储库类

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

    }
}
Run Code Online (Sandbox Code Playgroud)

现在,在 .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'`
Run Code Online (Sandbox Code Playgroud)

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

任何帮助将不胜感激......!!

谢谢

mjw*_*lls 5

c.Resolve<IMongoDbContext>
Run Code Online (Sandbox Code Playgroud)

应该:

c.Resolve<IMongoDbContext>()
Run Code Online (Sandbox Code Playgroud)

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