C# Autofac为带参数的SQLiteAsyncConnection注入单例
我正在使用PCL执行一个Xamarin原生项目,我有一个用于定义每个平台的数据库位置的第一个类:C# Autofac为带参数的SQLiteAsyncConnection注入单例,c#,sqlite,xamarin,dependency-injection,C#,Sqlite,Xamarin,Dependency Injection,我正在使用PCL执行一个Xamarin原生项目,我有一个用于定义每个平台的数据库位置的第一个类: public class DatabaseConfiguration : IDatabaseConfiguration { public string GetConnectionString() { //This code is specific to each platform return PathFor
public class DatabaseConfiguration : IDatabaseConfiguration
{
public string GetConnectionString()
{
//This code is specific to each platform
return PathForEachPlatform;
}
}
我是这样注射的:
builder.RegisterType<DatabaseConfiguration>()
.As<IDatabaseConfiguration>()
.SingleInstance();
SQLiteAsyncConnection
不提供接口,所以我决定使用单例。但是构造函数需要一个数据库路径。此路径由上面的另一个注入使用GetConnectionString()
方法定义。我该怎么做
目前,我有以下代码:
builder.RegisterInstance<SQLiteAsyncConnection>()
.WithParameter(new TypedParameter(typeof(string),"HERE THE PATH TO PASS BUT HOW ?"))
.SingleInstance();
builder.RegisterInstance()
.WithParameter(新的TypedParameter(typeof(string),“这里是要传递的路径,但如何传递?”)
.SingleInstance();
builder.Register
(c=>新的SQLiteAsyncConnection(
c、 Resolve().GetConnectionString())
.SingleInstance();
这将允许您注册连接并插入必要的连接字符串。为什么要删除.As()?它对我很好不?它是可选的,不需要在那里。如果你愿意的话,你可以把它放在那里——它什么都不起作用。好吧,那不行,我会做更多的检查并验证答案。非常感谢我的朋友!
builder.RegisterInstance<SQLiteAsyncConnection>()
.WithParameter(new TypedParameter(typeof(string),"HERE THE PATH TO PASS BUT HOW ?"))
.SingleInstance();
builder.Register
(c => new SQLiteAsyncConnection(
c.Resolve<IDatabaseConfiguration>().GetConnectionString()))
.SingleInstance();