@@ -198,6 +198,36 @@ public bool TryCreate(out Filter? Filter)
198198 /// <summary>Выполнить неявное преобразование в фильтр</summary>
199199 /// <param name="Builder">Построитель фильтра</param>
200200 public static implicit operator Filter ( IirSpecificationBuilder Builder ) => Builder . Create ( ) ;
201+
202+ /// <summary>Сформировать объект спецификации фильтра</summary>
203+ /// <returns>Спецификация фильтра</returns>
204+ public IirFilterSpecification BuildSpecification ( ) => GetSpecification ( ) ;
205+
206+ /// <summary>Попытаться сформировать объект спецификации фильтра без выброса исключения наружу</summary>
207+ /// <param name="Specification">Сформированная спецификация фильтра или null</param>
208+ /// <returns>True, если спецификация успешно сформирована</returns>
209+ public bool TryGetSpecification ( out IirFilterSpecification ? Specification )
210+ {
211+ try
212+ {
213+ Specification = GetSpecification ( ) ;
214+ return true ;
215+ }
216+ catch ( ArgumentException )
217+ {
218+ Specification = null ;
219+ return false ;
220+ }
221+ catch ( InvalidOperationException )
222+ {
223+ Specification = null ;
224+ return false ;
225+ }
226+ }
227+
228+ /// <summary>Сформировать экземпляр фильтра</summary>
229+ /// <returns>Экземпляр IIR-фильтра</returns>
230+ public Filter BuildFilter ( ) => Create ( ) ;
201231}
202232
203233/// <summary>Построитель IIR-фильтров выбранного семейства</summary>
@@ -454,9 +484,52 @@ static double Require(double? Value, string Name)
454484 /// <returns>Спецификация фильтра</returns>
455485 public IirFilterSpecification GetSpecification ( ) => ToSpecification ( ) . GetSpecification ( ) ;
456486
487+ /// <summary>Сформировать объект спецификации фильтра</summary>
488+ /// <returns>Спецификация фильтра</returns>
489+ public IirFilterSpecification BuildSpecification ( ) => GetSpecification ( ) ;
490+
491+ /// <summary>Попытаться сформировать объект спецификации фильтра без выброса исключения наружу</summary>
492+ /// <param name="Specification">Сформированная спецификация фильтра или null</param>
493+ /// <returns>True, если спецификация успешно сформирована</returns>
494+ public bool TryGetSpecification ( out IirFilterSpecification ? Specification )
495+ {
496+ try
497+ {
498+ Specification = GetSpecification ( ) ;
499+ return true ;
500+ }
501+ catch ( ArgumentException )
502+ {
503+ Specification = null ;
504+ return false ;
505+ }
506+ catch ( InvalidOperationException )
507+ {
508+ Specification = null ;
509+ return false ;
510+ }
511+ }
512+
457513 /// <summary>Создать фильтр на основе DSL-спецификации</summary>
458514 /// <returns>Экземпляр IIR-фильтра</returns>
459515 public Filter Create ( ) => GetSpecification ( ) . CreateFilter ( ) ;
516+
517+ /// <summary>Сформировать экземпляр фильтра</summary>
518+ /// <returns>Экземпляр IIR-фильтра</returns>
519+ public Filter BuildFilter ( ) => Create ( ) ;
520+
521+ /// <summary>Создать несколько независимых экземпляров фильтра</summary>
522+ /// <param name="Count">Количество экземпляров</param>
523+ /// <returns>Перечисление экземпляров фильтра</returns>
524+ /// <exception cref="ArgumentOutOfRangeException">Количество экземпляров меньше единицы</exception>
525+ public IEnumerable < Filter > CreateMany ( int Count )
526+ {
527+ if ( Count < 1 )
528+ throw new ArgumentOutOfRangeException ( nameof ( Count ) , Count , "Количество экземпляров должно быть больше нуля" ) ;
529+
530+ for ( var i = 0 ; i < Count ; i ++ )
531+ yield return Create ( ) ;
532+ }
460533}
461534
462535/// <summary>Построитель RC-фильтров</summary>
0 commit comments