public static void ExplicitInstance() { var zeroThreshold = new ThresholdComparer { Threshold = 0 }; var tenThreshold = new ThresholdComparer { Threshold = 10 }; var hundredThreshold = new ThresholdComparer { Threshold = 100 }; Predicate <int> greaterThanZero = zeroThreshold.IsGreaterThan; Predicate <int> greaterThanTen = tenThreshold.IsGreaterThan; Predicate <int> greaterThanOneHundred = hundredThreshold.IsGreaterThan; Console.WriteLine(greaterThanZero(42)); Console.WriteLine(greaterThanTen(42)); Console.WriteLine(greaterThanOneHundred(42)); Predicate <int> megaPredicate1 = greaterThanZero + greaterThanTen + greaterThanOneHundred; Predicate <int> megaPredicate2 = greaterThanZero; megaPredicate2 += greaterThanTen; megaPredicate2 += greaterThanOneHundred; }
public static void UsingCreateDelegate() { var zeroThreshold = new ThresholdComparer { Threshold = 0 }; MethodInfo m = typeof(ThresholdComparer).GetMethod("IsGreaterThan"); var greaterThanZero = (Predicate <int>)m.CreateDelegate( typeof(Predicate <int>), zeroThreshold); Console.WriteLine(greaterThanZero(42)); }