类
Autofac
类
SimpleContainer
命名空间
using Caliburn.Micro;
使用方法
public class Bootstrapper : BootstrapperBase
{
SimpleContainer _container;
public Bootstrapper()
{
System.Windows.FrameworkCompatibilityPreferences.KeepTextBoxDisplaySynchronizedWithTextProperty = false;
Initialize();
}
protected override void Configure()
{
base.Configure();
_container = new SimpleContainer();
_container.Singleton<IWindowManager, WindowManager>();
_container.Singleton<IEventAggregator, EventAggregator>();
_container.Singleton<MainWindowViewModel>();
}
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);
}
protected override void OnStartup(object sender, StartupEventArgs e)
{
DisplayRootViewFor<MainWindowViewModel>();
}
}
注入的两种方式
第一种,AlarmDBInteraction构造函数依赖了AppSetting,需要全部注入
builder.RegisterType<AppSetting>().As<IAppSetting>().SingleInstance();
builder.RegisterType<AlarmDBInteraction>().As<IAlarmDataService>().SingleInstance();
第二种,手动注册依赖项
builder.Register(c => new AlarmDBInteraction(new AppSetting())).As<IAlarmDataService>().SingleInstance();
或者手动给个空
builder.Register(c => new AlarmDBInteraction(null)).As<IAlarmDataService>().SingleInstance();
第三种,将实例化后的对象以接口方式注入
IFileProvider fileProvider = new MongoDbVarSamplingRateProvider("mongodb://admin:PwdIs123456@127.0.0.1/");
builder.RegisterInstance(fileProvider).SingleInstance();