我使用VS2017创建了一个跨平台的应用程序(Xamarin Forms),模板设置为Blank App,Platform Android,UI Tech Xamarin.Forms,Code Sharing .NET Standard。所有构建和运行并显示“欢迎来到Xamarin Froms”。
我将Portable.Ninject包添加到.NET标准PCL项目和Android项目中。 创建了以下Test类和接口
public class Test : ITest
{
public string name { get; set; }
}
public interface ITest
{
string name { get; set; }
}
NinjectModule类
public class modules : NinjectModule
{
public override void Load()
{
Bind<ITest>().To<Test>();
}
}
并在类App:Application和在构造函数中添加内核创建
public App ()
{
InitializeComponent();
var settings = new NinjectSettings();
settings.LoadExtensions = false;
var mods = new modules();
var kernel = new StandardKernel(mods);
var test = kernel.Get<ITest>();
MainPage = new App12.MainPage();
}
运行ArgumentNULLException时。参数名称:path1出现在新的StanardKernel(新模块())。
任何帮助将不胜感激。我试过Ninject Nuget包,在android项目MainActivity中创建StandardKernel:Oncreate,删除包,bin和obj文件夹...都具有相同的结果
添加: - 分隔模块类的实例化,以下是监视窗口。绑定列表的计数不应该为1吗?
- mods {App12.modules} App12.modules
- base {Ninject.Modules.NinjectModule} Ninject.Modules.NinjectModule
+ base {Ninject.Syntax.BindingRoot} Ninject.Syntax.BindingRoot
+ Bindings Count = 0 System.Collections.Generic.List<Ninject.Planning.Bindings.IBinding>
Kernel (null) Ninject.IKernel
Name "App12.modules" string
+ Non-public members
答案 0 :(得分:0)
您应该将LoadExtensions设置为false的NinjaSettings对象添加到StandardKernel构造函数。
public App()
{
InitializeComponent();
var settings = new NinjectSettings();
settings.LoadExtensions = false;
var kernel = new StandardKernel(settings, new modules());
var test = kernel.Get<ITest>();
MainPage = new App12.MainPage();
}