Измените контейнер Autofac на SimpleContainer (Caliburn.Micro) - PullRequest
0 голосов
/ 23 октября 2019

Я бы хотел переключиться с Autofac на SimpleContainer (Caliburn.Micro) из-за действительно классной функции WindowManager и я бы хотел использовать Caliburn.Micro.

Сейчас мой материал Autofac выглядит следующим образом:

Настроить

public static IContainer Configure()
{
    var builder = new ContainerBuilder();
    builder.RegisterType<DbContext>().As<IDbContext>();
    builder.RegisterType<DepartmentRepository>().As<IDepartmentRepository>();
    return builder.Build();
}

Использование

            var container = ContainerConfig.Configure();
        using (var scope = container.BeginLifetimeScope())
        {
            var test = scope.Resolve<IDepartmentRepository>();
            dept = test.GetById(DepartmentFK);
        }

Я уже создал новый файл Bootstrapper

#region SimpleContainer Creation, Configuration and Registration
        private SimpleContainer _container = new SimpleContainer();
        protected override void Configure()
        {
            _container.Instance(_container);

            _container
                .Singleton<IWindowManager, WindowManager>()
                .Singleton<IEventAggregator, EventAggregator>();

            GetType().Assembly.GetTypes()
                .Where(type => type.IsClass)
                .Where(type => type.Name.EndsWith("ViewModel"))
                .ToList()
                .ForEach(viewModelType => _container.RegisterPerRequest(
                    viewModelType, viewModelType.ToString(), viewModelType));
        }
        protected override object GetInstance(Type service, string key)
        {
            return _container.GetInstance(service, key);
        }

        protected override IEnumerable<object> GetAllInstances(Type service)
        {
            return _container.GetAllInstances(service);
        }

        protected override void BuildUp(object instance)
        {
            _container.BuildUp(instance);
        }
        #endregion

Как бы использовать вещи (scope.resolve<>) как выглядит использование SimleContainer вместо Autofac?

...