public interface IOperator<T, U> where T : IComparable<U>
public class EqualityOperator<T, U> : IOperator<T, U> where T : IComparable<U>
public bool Compare(T a, U b) {
return a.CompareTo(b) == 0;
public class Filter<T, U> where T : IComparable<U> {
public IOperator<T, U> storedOperator;
public static void Main()
EqualityOperator<int, int> test = new EqualityOperator<int, int>();