Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/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# Ninject:将依赖项IntPtr注入构造函数的参数方法_C#_Ninject - Fatal编程技术网

C# Ninject:将依赖项IntPtr注入构造函数的参数方法

C# Ninject:将依赖项IntPtr注入构造函数的参数方法,c#,ninject,C#,Ninject,我早些时候在这个问题上得到了帮助: @nemensv解决了这个问题,但我立即得到了一个关于IntPtr的新异常。请参阅下面的激活路径 我一直在看电影 此行中仅显示place IntPtr: Result r = Platform.SQLiteApi.Open(databasePathAsBytes, out handle, (int)openFlags, IntPtr.Zero); 如何使用ninject解决此问题 完全例外: Activation path: 6) Injection

我早些时候在这个问题上得到了帮助:

@nemensv解决了这个问题,但我立即得到了一个关于IntPtr的新异常。请参阅下面的激活路径

我一直在看电影

此行中仅显示place IntPtr:

 Result r = Platform.SQLiteApi.Open(databasePathAsBytes, out handle, (int)openFlags, IntPtr.Zero);
如何使用ninject解决此问题

完全例外:

Activation path:

  6) Injection of dependency IntPtr into parameter method of constructor

  5) Injection of dependency BlobSerializerDelegate+SerializeDelegate into parameter serializeDelegate of constructor

  4) Injection of dependency IBlobSerializer into parameter serializer of constructor

  3) Injection of dependency SQLiteConnection into parameter connection of constructor

  2) Injection of dependency ICarRepository into parameter carRepository of constructor

  1) Request for MainViewModel
我在Ninject中的代码:

 Bind<SQLiteConnection>()
                .ToSelf()
                .WithConstructorArgument("databasePath", path);
            Bind<ISQLitePlatform>().To<SQLitePlatformWinRT>();
            Bind<IBlobSerializer>().To<BlobSerializerDelegate>();
谢谢大家!

编辑:

这对我很有用:


Bind.ToMethodctx=>new-SQLiteConnectionnew-SQLitePlatformWP8,路径

正如ninject所述,它无法创建BlobSerializerDelegate,因为它不知道如何实例化BlobSerializerDelegate+SerializedDelegate。您需要告诉ninject如何创建BlobSerializerDelegate(如果有必要的话),或者告诉它如何实例化SQLiteConnection。 我认为对于给定的情况,ToMethod绑定最好:

Bind<SQLiteConnection>().ToMethod(ctx => new SQLiteConnection(...));

ToMethod操作应该像不使用DI容器时一样重新创建SQLiteConnection。

感谢您的回答,但我不明白。什么是。。。在新BlobSeriaLizerDelegate之前?到目前为止,我得到了如下结果:Bind.ToMethodpath、databasepath、ctor的参数都是伪代码。您将想要/的参数放在那里,这些参数由SQLiteConnection的构造函数定义。