c# - 如何在 Autofac 上注册单例

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

我在我的 .Net Core 2.0 网络应用程序中使用 Autofac 进行依赖注入(inject)。我是 Autofac 和依赖注入(inject)概念的新手。

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

C# 代码 [接口(interface)]

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 和依赖注入(inject)的新手,我想知道如何在 autofac 中注册 Singleton。

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

谢谢

最佳答案

c.Resolve<IMongoDbContext>

应该是:

c.Resolve<IMongoDbContext>()

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

关于c# - 如何在 Autofac 上注册单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47749229/

相关文章:

c# - 使用 Razor 在 ForEach 循环内的列中排列 MVC 复选框

c# - 如何通过 C# TestFrameworks 使用 DI 框架中的 AOP? (不适用于被测项目)

c# - 直接从 Dictionary<> 获取 KeyValuePair<>

c# - 使用 CodeDomProvider 在 Debug模式下编译源代码

c# - 从 C# 访问 ListBox 的 ScrollViewer

java - 如何根据注释为 @Autowire 字段提供不同的 bean 实现?

c# - NDepend 和依赖注入(inject)——如何连接这些点?

c# - 无法加载文件或程序集 Microsoft.IdentityModel.Tokens 问题

c# - SP 在 EF 5 CF 中有多个结果

asp.net-mvc-4 - 将主题应用到 jqGrid