Red*_*dog 1 c# dependency-injection unity-container
我们有一个类(实际上很多)有一个静态初始化函数,它需要在依赖注入容器中的对象上执行(使用Unity).
public class MyClass
{
public static void InitializeMappings(IMapper mapper)
{
// Do stuff to mapper
}
}
Run Code Online (Sandbox Code Playgroud)
我想InitializeMappings在Unity容器实例化新的IMapper实例时调用该函数.
我需要帮助:
InitializeMappings从容器中调用该函数mapper函数调用的参数InitializeMappings到IMapper实现的生命周期我将如何实现/定义这个?
这是糟糕的设计; 为什么不让mapper实现直接调用其构造函数中的setup函数?
您可以通过扩展或使用注射工厂来获取容器.像这样的东西:
container.RegisterType<IMapper>(
new WhateverLifetimeYouWant(),
new InjectionFactory(
c => {
var mapper = c.Resolve<IMapper>("RealMapper");
MyClass.InitializeMappings(mapper);
return mapper;
}
)
.RegisterType<IMapper, ActualMapper>("RealMapper");
Run Code Online (Sandbox Code Playgroud)
然后,只要你这样做container.Resolve<IMapper>(),就会运行那么一小块代码.
这仅适用于API,而不是通过配置文件.
| 归档时间: |
|
| 查看次数: |
4252 次 |
| 最近记录: |