@@ -103,34 +103,52 @@ public static SkStackActiveScanOptions Create(
103103 scanDurationGeneratorFunc : scanDurationGeneratorFunc
104104 ) ;
105105
106- private sealed class UserDefinedActiveScanOptions : SkStackActiveScanOptions {
107- private readonly Predicate < SkStackPanDescription > ? paaSelector ;
108- private readonly Func < IEnumerable < int > > scanDurationGeneratorFunc ;
106+ private abstract class ScanDurationGeneratorFuncActiveScanOptions : SkStackActiveScanOptions {
107+ private protected Func < IEnumerable < int > > ScanDurationGeneratorFunc { get ; }
109108
110- public UserDefinedActiveScanOptions (
111- Predicate < SkStackPanDescription > ? paaSelector ,
109+ public ScanDurationGeneratorFuncActiveScanOptions (
112110 IEnumerable < int > scanDurationGenerator
113111 )
114112 {
115113 if ( scanDurationGenerator is null )
116114 throw new ArgumentNullException ( nameof ( scanDurationGenerator ) ) ;
117115
116+ ScanDurationGeneratorFunc = new ( ( ) => scanDurationGenerator ) ;
117+ }
118+
119+ public ScanDurationGeneratorFuncActiveScanOptions (
120+ Func < IEnumerable < int > > scanDurationGeneratorFunc
121+ )
122+ {
123+ this . ScanDurationGeneratorFunc = scanDurationGeneratorFunc ?? throw new ArgumentNullException ( nameof ( scanDurationGeneratorFunc ) ) ;
124+ }
125+
126+ internal override IEnumerable < int > YieldScanDurationFactors ( ) => ScanDurationGeneratorFunc ( ) ;
127+ }
128+
129+ private sealed class UserDefinedActiveScanOptions : ScanDurationGeneratorFuncActiveScanOptions {
130+ private readonly Predicate < SkStackPanDescription > ? paaSelector ;
131+
132+ public UserDefinedActiveScanOptions (
133+ Predicate < SkStackPanDescription > ? paaSelector ,
134+ IEnumerable < int > scanDurationGenerator
135+ )
136+ : base ( scanDurationGenerator ?? throw new ArgumentNullException ( nameof ( scanDurationGenerator ) ) )
137+ {
118138 this . paaSelector = paaSelector ;
119- this . scanDurationGeneratorFunc = new ( ( ) => scanDurationGenerator ) ;
120139 }
121140
122141 public UserDefinedActiveScanOptions (
123142 Predicate < SkStackPanDescription > ? paaSelector ,
124143 Func < IEnumerable < int > > scanDurationGeneratorFunc
125144 )
145+ : base ( scanDurationGeneratorFunc ?? throw new ArgumentNullException ( nameof ( scanDurationGeneratorFunc ) ) )
126146 {
127147 this . paaSelector = paaSelector ;
128- this . scanDurationGeneratorFunc = scanDurationGeneratorFunc ?? throw new ArgumentNullException ( nameof ( scanDurationGeneratorFunc ) ) ;
129148 }
130149
131- public override SkStackActiveScanOptions Clone ( ) => new UserDefinedActiveScanOptions ( paaSelector , scanDurationGeneratorFunc ) ;
150+ public override SkStackActiveScanOptions Clone ( ) => new UserDefinedActiveScanOptions ( paaSelector , ScanDurationGeneratorFunc ) ;
132151 internal override bool SelectPanaAuthenticationAgent ( SkStackPanDescription desc ) => paaSelector ? . Invoke ( desc ) ?? true ;
133- internal override IEnumerable < int > YieldScanDurationFactors ( ) => scanDurationGeneratorFunc ( ) ;
134152 }
135153
136154 /// <summary>
@@ -165,34 +183,29 @@ PhysicalAddress paaMacAddress
165183 scanDurationGeneratorFunc : scanDurationGeneratorFunc
166184 ) ;
167185
168- private sealed class FindByMacAddressActiveScanOptions : SkStackActiveScanOptions {
186+ private sealed class FindByMacAddressActiveScanOptions : ScanDurationGeneratorFuncActiveScanOptions {
169187 private readonly PhysicalAddress paaMacAddress ;
170- private readonly Func < IEnumerable < int > > scanDurationGeneratorFunc ;
171188
172189 public FindByMacAddressActiveScanOptions (
173190 PhysicalAddress paaMacAddress ,
174191 IEnumerable < int > scanDurationGenerator
175192 )
193+ : base ( scanDurationGenerator ?? throw new ArgumentNullException ( nameof ( scanDurationGenerator ) ) )
176194 {
177- if ( scanDurationGenerator is null )
178- throw new ArgumentNullException ( nameof ( scanDurationGenerator ) ) ;
179-
180195 this . paaMacAddress = paaMacAddress ;
181- scanDurationGeneratorFunc = new ( ( ) => scanDurationGenerator ) ;
182196 }
183197
184198 public FindByMacAddressActiveScanOptions (
185199 PhysicalAddress paaMacAddress ,
186200 Func < IEnumerable < int > > scanDurationGeneratorFunc
187201 )
202+ : base ( scanDurationGeneratorFunc ?? throw new ArgumentNullException ( nameof ( scanDurationGeneratorFunc ) ) )
188203 {
189204 this . paaMacAddress = paaMacAddress ;
190- this . scanDurationGeneratorFunc = scanDurationGeneratorFunc ?? throw new ArgumentNullException ( nameof ( scanDurationGeneratorFunc ) ) ;
191205 }
192206
193- public override SkStackActiveScanOptions Clone ( ) => new FindByMacAddressActiveScanOptions ( paaMacAddress , scanDurationGeneratorFunc ) ;
207+ public override SkStackActiveScanOptions Clone ( ) => new FindByMacAddressActiveScanOptions ( paaMacAddress , ScanDurationGeneratorFunc ) ;
194208 internal override bool SelectPanaAuthenticationAgent ( SkStackPanDescription desc ) => desc . MacAddress . Equals ( paaMacAddress ) ;
195- internal override IEnumerable < int > YieldScanDurationFactors ( ) => scanDurationGeneratorFunc ( ) ;
196209 }
197210
198211 /*
0 commit comments