.NET MAUI Class Library с AutoFAC: службы не вводятся в ViewModel (NullReferenceException в конструкторе)C#

Место общения программистов C#
Ответить
Anonymous
 .NET MAUI Class Library с AutoFAC: службы не вводятся в ViewModel (NullReferenceException в конструкторе)

Сообщение Anonymous »

Я мигрирую проект «Унаследованные формы Ксамарина» в Мауи, а ниже - новая структура проекта Мауи. В соответствии с MAUI Project I есть библиотека классов .NET Project и .NET MAUI Class Library Project.
. Стронг> Проектта.slnобразное приложение/> ├½. ProjectB -> .NET Class Library (Models, Services, API)
├acking projectc -> .net Maui Class Library (представления, ViewModels, Handlers)
В Projectc (Netraibrite Class Library), у меня зависимость, и есть ServiceModEls, и ServiceModElsemed, и ServiceRed -Class -Class -ClassCIG, и ServiceDODELEDELSELEDELSELENDELSED AutoFac: < /p>

Код: Выделить всё

public static class DependencyConfig
{
public static void Configure(ContainerBuilder builder)
{
RegisterServices(builder);
RegisterViewModels(builder);
}

private static void RegisterServices(ContainerBuilder builder)
{
builder.RegisterType().As().SingleInstance();
builder.RegisterType().As().SingleInstance();
//remaining services
}

private static void RegisterViewModels(ContainerBuilder builder)
{
builder.RegisterViewModel();
//remaining viewmodels
}
}
< /code>
Моя проблема заключается в том, что я получаю ниже исключение, когда я запускаю проект: < /p>

dotnet] System.Reflect.TargetInvocationExexception: Исключение было добавлено в целевую цель. Autofac.core.dependencyresolutionException: исключение было добавлено при активации xamarin.forms.clinical6.viewmodels.loginpmaviewmodel. < /P>
< /blockquote>

[dotnet] Конструктор 'void .ctor (xamarin.forms.clinical6.core.services.inavigationservice, xamarin.forms.clinical6.core.services.iuserservice, xamarin.forms.clinical6.core.services.idialogservice, xamarin.clinical6.core.iceservices, xamarin.form.forms. Xamarin.forms.clinical6.core.services.ilanguageservice, xamarin.forms.colinical6.core.services.ideviceinfoservice, xamarin.forms.colinical6.core.services.ipolicyverificationservice) /> 
[dotnet] ---> system.nullreferenceexception: ссылка на объект не установлен на экземпляр объекта. NavigationService, IuserService Userservice, IdialogService DialogService, CachService Icacheservice, Ilanguageservice languageservice, Ideviceinfoservice Deciceservice, iPolicyverificationservicationserserationserviceservice) в C: \ Projects \ Inventiva-maui \ maui.clinical6 \ core \ viewmodels \ loginpmaviewmodel.cs: строка 102 < /p>
< /blockquote>
ниже строки 104, если loginpmaviewmodel, который также является использованием услуги. < /P>
biometricType = MainService.BiometricsServiceInstance.CanAuthenticationWith();
Я считаю, что проблема заключается в том, что DevingConfig.configure () в ProjectC никогда не вызывается, поэтому мои услуги и просмотры не зарегистрированы в Autofac. /> Мне нужно называть его внутри mauiprogram.cs в projecta.maui?
Если да, то как правильно интегрировать Autofac с системой Di .net Maui? Пробовал, как ниже: < /p>
builder.UseServiceProviderFactory(new AutofacServiceProviderFactory());

builder.ConfigureContainer(containerBuilder =>
{
ProjectC.DependencyConfig.Configure(containerBuilder);
});
< /code>
Но получение ниже ошибки: < /p>

'mauiappbuilder' не содержит определения для «использующего serviceproviderfactor Ссылка?)builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
builder.Host.ConfigureContainer(containerBuilder =>
{
ProjectC.DependencyConfig.Configure(containerBuilder);
});
< /code>
Для этого также получает ошибку ниже: < /p>

'Mauiappbuilder' не содержит определения для «хоста», и нет никакого доступного метода расширения «Хост».>

Подробнее здесь: https://stackoverflow.com/questions/797 ... model-null
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»