У меня есть приложение, которое я портирую на Prism (из XamVvm).Я использую DryIoC.
Мой интерфейс выглядит следующим образом
[assembly: Dependency(typeof(IJoinCongregation))]
namespace MapManPrism.Services
{
public interface IJoinCongregation
{
Task<bool> JoinCongregation(int Identifier, int PIN);
Task<bool> CheckForMapUpdates();
Task<Models.API.Publisher> PostPublisher(string name, string phone, int congregationid);
}
Класс, реализующий этот интерфейс, выглядит следующим образом
public class JoinCongregation : IJoinCongregation
{
private readonly string JoinCongregationAction = $"{EnvironmentConfiguration.WebEndPoint}Congregations/AuthoriseCongregation";
private readonly string RegisterPublisherAction = $"{EnvironmentConfiguration.WebEndPoint}Publisher/EnrolPublisher";
private readonly IFileStorage _fileStorage;
private readonly IDatabaseService _database;
public JoinCongregation(IFileStorage fileStorage, IDatabaseService database)
{
//var container = new Container();
//container.resolve
_fileStorage = fileStorage;
_database = database;
}
Однако, когда код моего конструкторазапускается в моей странице viewmodel (которая называется WelcomeWizardPageViewModel), она не может разрешить конкретную реализацию IJoinCongregation.Это заставляет DryIoC выдавать ошибку с превышением времени ожидания.
Код конструктора выглядит следующим образом ...
public WelcomeWizardPageViewModel(IJoinCongregation congregation)
{
//var container = new Container();
//new DatabaseService(); // runs constructor code which we need
_congregation = congregation;
...
Что я делаю не так?Это мои догадки.
- Я неправильно регистрирую службы
- Я неправильно перетаскиваю эти службы в другие службы
- Используя [сборку: Зависимость (typeof (IJoinCongregation))] в моих службах Я каким-то образом смешиваю DI Xamarin и DI DryIoC (я пытался исключить это безрезультатно)
Любая помощь будет , поэтому очень признателен.Спасибо.
РЕДАКТИРОВАТЬ: Вот как службы регистрируются в первую очередь:
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterForNavigation<NavigationPage>();
containerRegistry.RegisterForNavigation<MainPage>();
containerRegistry.RegisterForNavigation<WelcomeWizardPage>();
containerRegistry.RegisterForNavigation<SettingsPage>();
//containerRegistry.RegisterForNavigation<WelcomeWizard>();
//containerRegistry.register
//containerRegistry.RegisterType<IFileStorage, FileStorage>();
containerRegistry.Register<ICartService, CartService>();
containerRegistry.Register<IDatabaseService, DatabaseService>();
containerRegistry.Register<IJoinCongregation, JoinCongregation>();
containerRegistry.Register<IMapService, MapService>();
}