我在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。
任何帮助都将受到高度赞赏...... !!
谢谢
答案 0 :(得分:3)
c.Resolve<IMongoDbContext>
应该是:
c.Resolve<IMongoDbContext>()
您忘记调用/调用该函数。
答案 1 :(得分:0)
我无法弄清楚为什么在注册IMongoDataContext
时手动注入DemoRepository
。它不是反转控制工具的主要目的吗?我想,你应该改变你的方法;
builder.RegisterType<DemoRepository>().As<IDemoRepository>();