Yeni bir mutlu Xamarin geliştiricisiyim ve maalesef ilk proje sorunumda sıkışmış durumdayım. MVC ile çalışırken, Ninject ile çalışıyordum. Bu nedenle, bu aracı Xamarin projesinde de IoC ve DI olarak kullanmaya karar verdim. Çözümüm paylaşılan veriler için IOS projesi, Android projesi ve PCL'yi içeriyor. Benim PCL projede Ben (şimdiye kadar çok basit uygulama .. :)) benim NinjectModule yarattıNullReferenceException ile Xamarin Cross Platform'da Ninject Uygulaması
public class NinjectModuleImplementation : NinjectModule
{
public override void Load()
{
this.Bind<IMapPoint>().To<MapPoint>();
}
}
Ve ben kapsayıcı oluşturmak diğer statik sınıf: benim ana projede
public static class Startup
{
public static StandardKernel Container { get; set; }
public static void BuildContainer()
{
var kernel = new Ninject.StandardKernel(new NinjectModuleImplementation());
Startup.Container = kernel;
}
}
Ben Startup.BuildContainer();
Android: Ben "açıkça" benim bağımlılıkları kararlılığını çalıştığı sırada
[Application]
public class App : Application
{
public App(IntPtr h, JniHandleOwnership jho) : base(h, jho)
{
}
public override void OnCreate()
{
Startup.BuildContainer();
}
}
Ve iOS
Şimdi[Register ("AppDelegate")]
public class AppDelegate : UIApplicationDelegate
{
public override UIWindow Window {
get;
set;
}
public override bool FinishedLaunching (UIApplication application, NSDictionary launchOptions)
{
Startup.BuildContainer();
return true;
}
, sorun yoktur - bu çalışır. Ancak
IMapPoint point = Startup.Container.Get<IMapPoint>();
, ben yapıcı benim bağımlılığı enjekte deneyin - Böyle:
public class SomeClass
{
public static SomeClass Instance { get; private set; }
public IMapPoint point;
public SomeClass(IMapPoint _point)
{
Instance = this;
point = _point;
}
}
NullReferenceException atılır ... Neyi yanlış yapıyorum? Eğer her platform başına bir modül var mı ben, herhangi bir öneri :)
Saygılar için
Mariusz
Merhaba Jon. Modülüm PCL Projesi'nde saklanır. Ancak, Natives projesinden Modül'e statik Başlangıç sınıfı ve Prop Container tarafından bir referansım var. PCL'de bir modül oluşturmanın mümkün olduğunu düşündüm ... Doğru muyum? Aksi takdirde, modülümü yerel projeye koyarsam IoC kabımı PCL'de nasıl kullanırım? PCL, iOS/Android referansına sahip değildir. – Mariusz
Cevabımın altındaki öğreticiyi izlemeyi ve bunun bazı öğelerin netleştirilmesine yardımcı olup olmadığını görmenizi öneririz. –