我正在从Windsor
迁移到Simple Injector
,我尝试按照以下this link进行操作。但我找不到任何替代品:
container.AddFacility<TypedFactoryFacility>();
container.Register(Component.For<ICacheDependencyFactory>().AsFactory());
Simple Injector
中的上述代码替换为什么?
编辑:
ICacheDependencyFactory.cs
public interface ICacheDependencyFactory
{
T Create<T>()
where T : ICacheDependency;
void Release<T>(T cacheDependency)
where T : ICacheDependency;
}
答案 0 :(得分:4)
Castle的工厂设施能够根据您提供的界面生成代理类。此代理类将回调到容器中以请求创建此类型的新实例。
Simple Injector缺乏这样的功能。 Simple Injector并没有实现这一点,因为:
以下是一个例子:
private sealed class CacheDependencyFactory : ICacheDependencyFactory {
public Container Container { get; set; }
public T Create<T>() where T : ICacheDependency, class {
return this.Container.GetInstance<T>();
}
}
该工厂可以注册如下:
container.RegisterSingle<ICacheDependencyFactory>(
new CacheDependencyFactory { Container = container });