我有一个有状态的构建器类。
interface IFilterBuilder
{
AddFilter1();
AddFilter2();
//etc
IEnumerable<Filter> FilterList { get; }
}
class FilterBuilder : IFilterBuilder { //implementation }
目前我正在使用 new 关键字创建它的实例,因为它是短暂的,并且在单例对象的方法中使用。
我知道我可以注入像Func<IFilterBuilder>
单例这样的工厂类型并用容器解决它,但我真的不想拥有一个filterBuilderFactory
.
有没有办法通过这样的拦截来做某种魔术:
class SingletonClass
{
[TransientDependency]
public IFilterBuilder FilterBuilder
get
{
//magic.gif
}
set
{
//some stuff for testability
}
}
因此,当我需要在方法中使用它时,我会得到一个新实例。
IFilter filterBuilder = FilterBuilder;
filterBuilder.AddFilter1();
return filterBuilder.FilterList;
当它超出范围时,它必须释放对象,我应该有办法在我的测试中用模拟替换它。