我正在使用PCL进行Xamarin Native项目,我有一个第一类用于为每个平台定义数据库的位置:
public class DatabaseConfiguration : IDatabaseConfiguration
{
public string GetConnectionString()
{
//This code is specific to each platform
return PathForEachPlatform;
}
}
我这样注射:
builder.RegisterType<DatabaseConfiguration>()
.As<IDatabaseConfiguration>()
.SingleInstance();
现在我不想将SQLiteAsyncConnection
注入我的存储库类。这个课程来自这个难题:https://www.nuget.org/packages/sqlite-net-pcl
这是我的存储库构造函数:
private SQLiteAsyncConnection Connection { get; }
public SQLiteRepository(IDatabaseConfiguration configuration)
{
Connection = new SQLiteAsyncConnection(configuration.GetConnectionString()); // I wan't to inject the connection not create a new one.
}
}
SQLiteAsyncConnection
没有提供接口,因此我决定使用单例。但是构造函数需要一个数据库路径。此路径由上面的另一个注入使用GetConnectionString()
方法定义。我怎么能这样做?
现在我有了这段代码:
builder.RegisterInstance<SQLiteAsyncConnection>()
.WithParameter(new TypedParameter(typeof(string),"HERE THE PATH TO PASS BUT HOW ?"))
.SingleInstance();
答案 0 :(得分:1)
builder.Register
(c => new SQLiteAsyncConnection(
c.Resolve<IDatabaseConfiguration>().GetConnectionString()))
.SingleInstance();
这将允许您注册连接并注入必要的连接字符串。