Caliburn.micro是怎么实现依赖注入,可以通过Export
时间: 2024-03-13 17:42:54 浏览: 130
用Roboguice实现依赖注入
Caliburn.Micro 中的依赖注入是基于 Simple Container 的。Simple Container 是一个轻量级的 IOC 容器,它支持基于约定的依赖注入,也支持基于属性的依赖注入。
在 Caliburn.Micro 中,可以通过在 ViewModel 中使用 `Export` 特性来标记需要注入的属性或构造函数参数,例如:
```csharp
public class MainViewModel : Screen
{
private readonly IEventAggregator _eventAggregator;
[ImportingConstructor]
public MainViewModel(IEventAggregator eventAggregator)
{
_eventAggregator = eventAggregator;
}
[Import]
public IWindowManager WindowManager { get; set; }
}
```
在上面的代码中,`ImportingConstructor` 特性标记了 MainViewModel 的构造函数,表示需要注入 IEventAggregator 接口的实例。`Import` 特性标记了 WindowManager 属性,表示需要注入 IWindowManager 接口的实例。
这样,在运行时,Simple Container 就会自动扫描程序集中标记了 `Export` 特性的类和接口,并将它们注册到容器中。当需要获取某个实例时,可以通过 IOC.Get<T> 方法从容器中获取相应的实例。
阅读全文