@@ -184,6 +184,74 @@ public bool Validate()
184
184
return IsValue1 && ! IsValue2 && ! IsValue3 && ! IsValue4 || ! IsValue1 && IsValue2 && ! IsValue3 && ! IsValue4 || ! IsValue1 && ! IsValue2 && IsValue3 && ! IsValue4 || ! IsValue1 && ! IsValue2 && ! IsValue3 && IsValue4 ;
185
185
}
186
186
187
+ /// <summary>
188
+ ///
189
+ /// </summary>
190
+ public TResult ? Match < TResult > (
191
+ global ::System . Func < T1 , TResult > ? value1 = null ,
192
+ global ::System . Func < T2 , TResult > ? value2 = null ,
193
+ global ::System . Func < T3 , TResult > ? value3 = null ,
194
+ global ::System . Func < T4 , TResult > ? value4 = null ,
195
+ bool validate = true )
196
+ {
197
+ if ( validate )
198
+ {
199
+ Validate ( ) ;
200
+ }
201
+
202
+ if ( IsValue1 && value1 != null )
203
+ {
204
+ return value1 ( Value1 ! ) ;
205
+ }
206
+ else if ( IsValue2 && value2 != null )
207
+ {
208
+ return value2 ( Value2 ! ) ;
209
+ }
210
+ else if ( IsValue3 && value3 != null )
211
+ {
212
+ return value3 ( Value3 ! ) ;
213
+ }
214
+ else if ( IsValue4 && value4 != null )
215
+ {
216
+ return value4 ( Value4 ! ) ;
217
+ }
218
+
219
+ return default ( TResult ) ;
220
+ }
221
+
222
+ /// <summary>
223
+ ///
224
+ /// </summary>
225
+ public void Match (
226
+ global ::System . Action < T1 > ? value1 = null ,
227
+ global ::System . Action < T2 > ? value2 = null ,
228
+ global ::System . Action < T3 > ? value3 = null ,
229
+ global ::System . Action < T4 > ? value4 = null ,
230
+ bool validate = true )
231
+ {
232
+ if ( validate )
233
+ {
234
+ Validate ( ) ;
235
+ }
236
+
237
+ if ( IsValue1 )
238
+ {
239
+ value1 ? . Invoke ( Value1 ! ) ;
240
+ }
241
+ else if ( IsValue2 )
242
+ {
243
+ value2 ? . Invoke ( Value2 ! ) ;
244
+ }
245
+ else if ( IsValue3 )
246
+ {
247
+ value3 ? . Invoke ( Value3 ! ) ;
248
+ }
249
+ else if ( IsValue4 )
250
+ {
251
+ value4 ? . Invoke ( Value4 ! ) ;
252
+ }
253
+ }
254
+
187
255
/// <summary>
188
256
///
189
257
/// </summary>
0 commit comments