@@ -221,6 +221,84 @@ public bool Validate()
221221 return IsValue1 && ! IsValue2 && ! IsValue3 && ! IsValue4 && ! IsValue5 || ! IsValue1 && IsValue2 && ! IsValue3 && ! IsValue4 && ! IsValue5 || ! IsValue1 && ! IsValue2 && IsValue3 && ! IsValue4 && ! IsValue5 || ! IsValue1 && ! IsValue2 && ! IsValue3 && IsValue4 && ! IsValue5 || ! IsValue1 && ! IsValue2 && ! IsValue3 && ! IsValue4 && IsValue5 ;
222222 }
223223
224+ /// <summary>
225+ ///
226+ /// </summary>
227+ public TResult ? Match < TResult > (
228+ global ::System . Func < T1 , TResult > ? value1 = null ,
229+ global ::System . Func < T2 , TResult > ? value2 = null ,
230+ global ::System . Func < T3 , TResult > ? value3 = null ,
231+ global ::System . Func < T4 , TResult > ? value4 = null ,
232+ global ::System . Func < T5 , TResult > ? value5 = null ,
233+ bool validate = true )
234+ {
235+ if ( validate )
236+ {
237+ Validate ( ) ;
238+ }
239+
240+ if ( IsValue1 && value1 != null )
241+ {
242+ return value1 ( Value1 ! ) ;
243+ }
244+ else if ( IsValue2 && value2 != null )
245+ {
246+ return value2 ( Value2 ! ) ;
247+ }
248+ else if ( IsValue3 && value3 != null )
249+ {
250+ return value3 ( Value3 ! ) ;
251+ }
252+ else if ( IsValue4 && value4 != null )
253+ {
254+ return value4 ( Value4 ! ) ;
255+ }
256+ else if ( IsValue5 && value5 != null )
257+ {
258+ return value5 ( Value5 ! ) ;
259+ }
260+
261+ return default ( TResult ) ;
262+ }
263+
264+ /// <summary>
265+ ///
266+ /// </summary>
267+ public void Match (
268+ global ::System . Action < T1 > ? value1 = null ,
269+ global ::System . Action < T2 > ? value2 = null ,
270+ global ::System . Action < T3 > ? value3 = null ,
271+ global ::System . Action < T4 > ? value4 = null ,
272+ global ::System . Action < T5 > ? value5 = null ,
273+ bool validate = true )
274+ {
275+ if ( validate )
276+ {
277+ Validate ( ) ;
278+ }
279+
280+ if ( IsValue1 )
281+ {
282+ value1 ? . Invoke ( Value1 ! ) ;
283+ }
284+ else if ( IsValue2 )
285+ {
286+ value2 ? . Invoke ( Value2 ! ) ;
287+ }
288+ else if ( IsValue3 )
289+ {
290+ value3 ? . Invoke ( Value3 ! ) ;
291+ }
292+ else if ( IsValue4 )
293+ {
294+ value4 ? . Invoke ( Value4 ! ) ;
295+ }
296+ else if ( IsValue5 )
297+ {
298+ value5 ? . Invoke ( Value5 ! ) ;
299+ }
300+ }
301+
224302 /// <summary>
225303 ///
226304 /// </summary>
0 commit comments