Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Autofac为带参数的SQLiteAsyncConnection注入单例_C#_Sqlite_Xamarin_Dependency Injection - Fatal编程技术网

C# Autofac为带参数的SQLiteAsyncConnection注入单例

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

我正在使用PCL执行一个Xamarin原生项目,我有一个用于定义每个平台的数据库位置的第一个类:

  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();