【发布时间】:2016-07-20 12:22:50
【问题描述】:
我是一名快乐的新 Xamarin 开发人员,但不幸的是,我遇到了第一个项目问题。当我使用 MVC 时,我曾经使用过 Ninject。所以,我决定在 Xamarin 项目中也使用这个工具作为我的 IoC 和 DI。我的解决方案包含用于共享数据的 IOS 项目、Android 项目和 PCL。 在我的 PCL 项目中,我创建了我的 NinjectModule(到目前为止非常简单的实现..:))
public class NinjectModuleImplementation : NinjectModule
{
public override void Load()
{
this.Bind<IMapPoint>().To<MapPoint>();
}
}
以及我创建容器的另一个静态类:
public static class Startup
{
public static StandardKernel Container { get; set; }
public static void BuildContainer()
{
var kernel = new Ninject.StandardKernel(new NinjectModuleImplementation());
Startup.Container = kernel;
}
}
在我的原生项目中,我调用 Startup.BuildContainer();
安卓:
[Application]
public class App : Application
{
public App(IntPtr h, JniHandleOwnership jho) : base(h, jho)
{
}
public override void OnCreate()
{
Startup.BuildContainer();
}
}
iOS
[Register ("AppDelegate")]
public class AppDelegate : UIApplicationDelegate
{
public override UIWindow Window {
get;
set;
}
public override bool FinishedLaunching (UIApplication application, NSDictionary launchOptions)
{
Startup.BuildContainer();
return true;
}
现在,当我尝试“显式”解决我的依赖项时,没有问题 - 它可以工作。
IMapPoint point = Startup.Container.Get<IMapPoint>();
但是,当我尝试通过构造函数注入我的依赖项时 - 就像这样:
public class SomeClass
{
public static SomeClass Instance { get; private set; }
public IMapPoint point;
public SomeClass(IMapPoint _point)
{
Instance = this;
point = _point;
}
}
NullReferenceException 被抛出...我做错了什么? 我将不胜感激任何建议:)
问候,
马吕斯
【问题讨论】:
标签: dependency-injection xamarin ninject ioc-container