使用LightInject

时间:2018-12-27 06:37:52

标签: c# dependency-injection xamarin.forms light-inject

我是Xamarin Forms和LightInject的新手。

我要放假了

  

System.InvalidCastException:指定的转换无效。

通话时 LoadApplication(new App());在MainActivity.cs

在将实例作为导航页调用时会发生这种情况。我试过了 MainPage = instance,它可以正常工作。但是我需要将实例作为NavigationPage发送

你知道为什么会这样吗?

var container = new ServiceContainer();
container.Register<WardListPage>();
container.Register<WardListViewModel>();
container.Register<WardListService>();

container.Register<PatientListViewPage>();
container.Register<PatientListViewModel>();
container.Register<PatientService>();

container.Register<PatientDetailsViewPage>();
container.Register<PatientDetailsViewModel>();

var instance = container.GetInstance<WardListPage>();

MainPage = new NavigationPage(instance); //here the issue comes

这是堆栈跟踪

here is the stacktrace


以下是例外详细信息

12-30 09:26:37.554 I / mono-stdout(18434):System.InvalidCastException:指定的强制转换无效。 System.InvalidCastException:指定的强制转换无效。 12/30 09:26:37.558 I / mono-stdout(18434):位于Xamarin.Forms.Internals的<3a9c335d80a748a29a8f8588acbed83f>:0中的Xamarin.Forms.Internals.ToolbarTracker.RegisterChildPage(Xamarin.Forms.Page页面)[0x0001c] <3a9c335d80a748a29a8f8588acbed83f>:0中的.ToolbarTracker.RegisterChildPage(Xamarin.Forms.Page页面)[0x0001c]   在Xamarin.Forms.Internals.EnumerableExtensions.ForEach [T](System.Collections.Generic.IEnumerable 1[T] enumeration, System.Action 1 [T]动作)中的[0x00010]在<3a9c335d80a748a29a8f8588acbed83f>:0 12-30 09:26:37.560 I / mono-stdout(18434):位于Xamarin.Forms.Internals.EnumerableExtensions.ForEach [T](System.Collections.Generic.IEnumerable 1[T] enumeration, System.Action 1 [T]操作)[0x00010]在<3a9c335d80a748a29a8f8588acbed83f >>:0 12/30 09:26:37.561 I / mono-stdout(18434):位于Xamarin.Forms.Internals.ToolbarTracker.TrackTarget(Xamarin.Forms.Page页面)[0x00041]在<3a9c335d80a748a29a8f8588acbed83f>:0在Xamarin.Forms.Internals <3a9c335d80a748a29a8f8588acbed83f>:0中的.ToolbarTracker.TrackTarget(Xamarin.Forms.Page页面)[0x00041]   在Xamarin.Forms.Internals.ToolbarTracker.set_Target(Xamarin.Forms.Page值)[0x00025]在<3a9c335d80a748a29a8f8588acbed83f>:0 12-30 09:26:37.563 I / mono-stdout(18434):在Xamarin.Forms.Internals .ToolbarTracker.set_Target(Xamarin.Forms.Page值)[0x00025]在<3a9c335d80a748a29a8f8588acbed83f>:0中   在<02db0bcb95874f4db06b80f38eac4adf>:0中的Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer.OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs 1[TElement] e) [0x000fe] in <02db0bcb95874f4db06b80f38eac4adf>:0 12-30 09:26:37.565 I/mono-stdout(18434): at Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer.OnElementChanged (Xamarin.Forms.Platform.Android.ElementChangedEventArgs 1 [TElement] e)[0x000fe]中   在<9cf8e9b117d44fb7a184e024868cb7a5>:0中的FormsControls.Droid.AppCompatAnimationNavRenderer.OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs 1[TElement] e) [0x00000] in <9cf8e9b117d44fb7a184e024868cb7a5>:0 12-30 09:26:37.567 I/mono-stdout(18434): at FormsControls.Droid.AppCompatAnimationNavRenderer.OnElementChanged (Xamarin.Forms.Platform.Android.ElementChangedEventArgs 1 [TElement] e)[0x00000]处   在<02db0bcb95874f4db06b80f38eac4adf>:0中的Xamarin.Forms.Platform.Android.VisualElementRenderer 1[TElement].SetElement (TElement element) [0x000dd] in <02db0bcb95874f4db06b80f38eac4adf>:0 12-30 09:26:37.569 I/mono-stdout(18434): at Xamarin.Forms.Platform.Android.VisualElementRenderer 1 [TElement] .SetElement(TElement元素)[0x000dd]中 12-30 09:26:37.571 I / mono-stdout(18434):位于Xamarin.Forms.Platform.Android.VisualElementRenderer 1[TElement].Xamarin.Forms.Platform.Android.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement element) [0x00027] in <02db0bcb95874f4db06b80f38eac4adf>:0 at Xamarin.Forms.Platform.Android.VisualElementRenderer 1 [TElement] .Xamarin.Forms.Platform.Android.IVisualElementRenderer.SetElement(Xamarin .Forms.VisualElement元素)[0x00027]在<02db0bcb95874f4db06b80f38eac4adf>:0中 12-30 09:26:37.573 I / mono-stdout(18434):位于<02db0bcb95874f4db06b80f38eac4adf中的Xamarin.Forms.Platform.Android.Platform.CreateRenderer(Xamarin.Forms.VisualElement元素,Android.Content.Context上下文)[0x0001f]在<02db0bcb95874f4db06b80f38eac4adf>:0中的Xamarin.Forms.Platform.Android.Platform.CreateRenderer(Xamarin.Forms.VisualElement元素,Android.Content.Context上下文)[0x0001f]中为>:0 12-30 09:26:37.575 I / mono-stdout(18434):位于<02db0bcb95874f4db06b80f38eac4adf中的Xamarin.Forms.Platform.Android.AppCompat.Platform.AddChild(Xamarin.Forms.Page页面,System.Boolean布局)[0x00009]在<02db0bcb95874f4db06b80f38eac4adf>:0中的Xamarin.Forms.Platform.Android.AppCompat.Platform.AddChild(Xamarin.Forms.Page页,System.Boolean布局)[0x00009]中为>:0 12/30 09:26:37.576 I / mono-stdout(18434):位于Xamarin.Forms.Platform.Android.AppCompat.Platform.SetPageInternal(Xamarin.Forms.Page newRoot)[0x00096]在<02db0bcb95874f4db06b80f38eac4adf>:0处<02db0bcb95874f4db06b80f38eac4adf>:0中的.Forms.Platform.Android.AppCompat.Platform.SetPageInternal(Xamarin.Forms.Page newRoot)[0x00096]   在<02db0bcb95874f4db06b80f38eac4adf>:0中的Xamarin.Forms.Platform.Android.AppCompat.Platform.SetPage(Xamarin.Forms.Page newRoot)[0x00087]中   在Xamarin.Forms.Platform.Android.FormsAppCompatActivity.InternalSetPage(Xamarin.Forms.Page页面)[0x00052]在<02db0bcb95874f4db06b80f38eac4adf>:0 12-30 09:26:37.578 I / mono-stdout(18434):在Xamarin.Forms <02db0bcb95874f4db06b80f38eac4adf>:0中的.Platform.Android.AppCompat.Platform.SetPage(Xamarin.Forms.Page newRoot)[0x00087] 12-30 09:26:37.580 I / mono-stdout(18434):位于Xamarin.Forms上<02db0bcb95874f4db06b80f38eac4adf>:0的Xamarin.Forms.Platform.Android.FormsAppCompatActivity.InternalSetPage(Xamarin.Forms.Page页面)[0x00052] <02db0bcb95874f4db06b80f38eac4adf>:0中的.Platform.Android.FormsAppCompatActivity.SetMainPage()[0x0000c] 12/30 09:26:37.581 I / mono-stdout(18434):在Xamarin.Forms.Platform.Android.FormsAppCompatActivity.SetMainPage()在<02db0bcb95874f4db06b80f38eac4adf>:0的Xamarin.Forms.Platform.Android.FormsAppat中<02db0bcb95874f4db06b80f38eac4adf>:0中的.LoadApplication(Xamarin.Forms.Application应用程序)[0x0026f] 12-30 09:26:37.583 I / mono-stdout(18434):位于Xamarin.Forms.Platform.Android.FormsAppCompatActivity.LoadApplication(Xamarin.Forms.Application应用程序)[0x0026f]在<02db0bcb95874f4db06b80f38eac4adf>:0处,位于DipsDroidXaml。 .MainActivity.OnCreate(Android.OS.Bundle捆绑包)[0x0002f]在C:\ Users \ madura.d \ source \ repos \ DipsDemoXaml \ DipsDemoXaml \ DipsDemoXaml.Android \ MainActivity.cs:22 12-30 09:26:37.585 I / mono-stdout(18434):位于C:\ Users \ madura.d \ source \ repos \中的DipsDemoXaml.Droid.MainActivity.OnCreate(Android.OS.Bundle bundle)[0x0002f] DipsDemoXaml \ DipsDemoXaml \ DipsDemoXaml.Android \ MainActivity.cs:22

0 个答案:

没有答案