Я пытаюсь добавить адаптер DryIoc для MS DI в общую библиотеку Xamarin.Forms (стандартная библиотека классов .net), но пока не могу.
Когда я запускаю проект, я получаю эту ошибку
05-20 11: 49: 29.528 D / (3402): HostConnection :: get () Установлено новое соединение с хостом 0xda77ac90, tid 3402 05-20 11: 49: 29.533 D / Atlas (3402): Проверка карты ... Необработанное исключение:
System.NullReferenceException: Ссылка на объект не установлена на экземпляр объекта.
05-20 11: 50: 18.777 D / Mono (3402): DllImport пытается загрузить: '/system/lib/liblog.so'.05-20 11: 50: 18.777 D / Mono (3402): загруженная библиотека DllImport '/system/lib/liblog.so'.05-20 11: 50: 18.777 D / Mono (3402): поиск DllImport в: '/system/lib/liblog.so' ('/system/lib/liblog.so').05-20 11: 50: 18.777 D / Mono (3402): поиск «__android_log_print».05-20 11: 50: 18.777 D / Mono (3402): проверка «__android_log_print».05-20 11: 50: 18.777 D / Mono (3402): найдено как «__android_log_print».Необработанное исключение:
System.NullReferenceException: ссылка на объект не установлена для экземпляра объекта.
05-20 11: 50: 18.790 I / MonoDroid (3402): НЕПРАВИЛЬНОЕ ИСКЛЮЧЕНИЕ: 05-20 11: 50: 18.791 I / MonoDroid (3402): System.NullReferenceException: ссылка на объект не установлена для экземпляра объекта.05-20 11: 50: 18.791 I / MonoDroid (3402): в Prism.Common.PageUtilities.GetCurrentPage (Xamarin.Forms.Page mainPage) [0x00002] в D: \ a \ 1 \ s \ Source \ Xamarin \ Prism.Forms \ Common \ PageUtilities.cs: 212 05-20 11: 50: 18.791 I / MonoDroid (3402): в Prism.PrismApplicationBase.OnSleep () [0x00000] в D: \ a \ 1 \ s \ Source \ Xamarin \ Prism.Forms \ PrismApplicationBase.cs: 193 05-20 11: 50: 18.791 I / MonoDroid (3402): в Xamarin.Forms.Application.SendSleep () [0x00000] в D: \ a \ 1 \ s \ Xamarin.Forms.Core \ Application.cs: 297 05-20 11: 50: 18.791 I / MonoDroid (3402): в Xamarin.Forms.Platform.Android.FormsAppCompatActivity.OnStateChanged () [0x00057] в D: \ a \ 1 \ s \ Xamarin.Forms.Platform.Android \ AppCompat \ FormsAppCompatActivity.cs: 345 05-20 11: 50: 18.791 I / MonoDroid (3402): в Xamarin.Forms.Platform.Android.FormsAppCompatActivity.OnStop () [0x00019] в D: \a \ 1 \ s \ Xamarin.Forms.Platform.Android \ AppCompat \ FormsAppCompatActivity.cs: 293 05-20 11: 50: 18.791 I / MonoDroid (3402): в Android.App.Activity.n_OnStop (System.IntPtr jnienv,System.IntPtr native__this) [0x00009] в <788a34f7a7b84486905dfde786529d42>: 0 05-20 11: 50: 18.791 I / MonoDroid (3402): в (динамический метод-оболочка) Android.Runtime.DynamicMethodNameCounter.15 (intptr, intptr) 05 (intptr, intptr): 50: 18.806 W / art (3402): JNI RegisterNativeMethods: попытка зарегистрировать 0 собственных методов для android.runtime.JavaProxyThrowable
Если я удаляю IUserSocialService
из конструктора MainPageViewModel, то работает нормально.Я не знаю, почему не внедряется реализация IUserSocialService
.
ServiceLayer
public static IServiceCollection Init()
{
var serviceCollection = new ServiceCollection();
serviceCollection.AddSingleton<IUserSocialService, UserSocialService>();
return serviceCollection;
}
Xamarin.Forms (общая стандартная библиотека классов с общим доступом)
protected override IContainerExtension CreateContainerExtension()
{
var containerExtension = (DryIocContainerExtension)base.CreateContainerExtension();
containerExtension.Instance.Populate(ServicesLayer.Init());
return containerExtension;
}
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterForNavigation<NavigationPage>();
containerRegistry.RegisterForNavigation<MainPage, MainPageViewModel>();
}
MainPageViewModel
private readonly IUserSocialService userSocialService;
public MainPageViewModel(INavigationService navigationService, IUserSocialService userSocialService) : base(navigationService)
{
Title = "Main Page";
this.userSocialService = userSocialService;
}
Версия пакетов:
Уровень обслуживания:
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="2.2.0" />
Xamarin.Forms (общая стандартная библиотека классов net)
<PackageReference Include="DryIoc.Microsoft.DependencyInjection" Version="2.1.0" />
<PackageReference Include="Prism.DryIoc.Forms" Version="7.1.0.431" />
Заранее спасибо!