У меня есть класс строителя, который имеет статус.Есть ли умный способ использования переходного объекта в одноэлементном режиме?
interface IFilterBuilder
{
AddFilter1();
AddFilter2();
//etc
IEnumerable<Filter> FilterList { get; }
}
class FilterBuilder : IFilterBuilder { //implementation }
На данный момент я создаю свои экземпляры с новым ключевым словом, потому что это недолгий и используется внутри метода одноплодного объекта.
Я знаю, что могу ввести заводской тип, например 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;
Он должен будет освободить объект, когда его из сферы, и я должен иметь возможность заменить его на макет в моих тестах.
Я думаю, что лучше просто использовать filterBuilderFactory, чем пытаться сделать эту работу с контейнером IOC. – driushkin