c# - 将 Autofac 容器更改为 SimpleContainer (Caliburn.Micro)
问题描述
由于非常酷的 WindowManager 功能,我想从 Autofac 切换到 SimpleContainer (Caliburn.Micro),并且我想使用 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);
}
我已经创建了一个新的引导程序文件
#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?
解决方案
推荐阅读
- rx-java - 用一个值初始化 RxJava 流
- java - UserRepository 在 @Autowired 中返回 null
- laravel - 自动备份 MySQL 数据库到谷歌驱动器
- azure - 在 Azure 自动化 Powershell 脚本中使用参数数组
- java - 如何在Android中保持从baseAdapter接收到的奇数个按钮为三角形?
- android - Android Studio 平台工具-无法下载 api 24/28
- node.js - 尝试使用 npm 命令安装任何软件包时出现错误
- vuejs2 - VeeValidate 不适用于内联编辑。我正在使用 v-for 和 v-if 进行内联编辑
- java - 模拟类在运行测试时从不总是给出空指针
- javascript - Javascript [Symbol.toPrimitive](hint) 转换函数