我有以下的类,它暴露了一个公共的工厂方法,而不是一个公共构造:通过.UsingFactoryMethod解决的瞬态依赖性的生命周期是什么,但没有使用内核明确解决?
public class SomeDependency
{
private readonly string _someValue;
private SomeDependency(string someValue)
{
_someValue = someValue;
}
public static SomeDependency CreateSomeDependency(string someValue)
{
return new SomeDependency(someValue);
}
}
我在容器中配置它有一过性的生活方式,要通过静态方法创建:
Container.Register(Component.For<SomeDependency>()
.UsingFactoryMethod(k => SomeDependency.CreateSomeDependency("a value"))
.LifestyleTransient());
此依赖关系注入的所有组件也被配置为瞬态的。
当依赖于它的对象超出范围或者这个依赖关系未能被处置并使所有事物都停滞不前时,容器是否会处置这种依赖关系?
在图案A小细节:组件旨在是公开可用,但没有公开施工的由于构建它需要不兼容的类型。通过使用静态工厂方法可以获得对象的实例。类型化的工厂不工作,因为我试图保持构造函数为私有。因为我希望能够以分离使用DI具有消耗代码调用静态方法变得有问题的对象。最终,这归结于容器的实现细节。 – moarboilerplate