Making operations more dynamic
Well there is multiple solution to this problem , 


Using delegate: 

public bool Validate&lt;T1,T2&gt;(T1 value, T2 compareValue, Func&lt;T1,T2,bool&gt; operation)
{
    return operation(value, compareValue);
}
magic.Validate(1, 2, (a, b) =&gt; a &gt; b);
magic.Validate("Testing", "Testing", (a, b) =&gt; a.Equals(b));



but twp problems with this code is : first your input can be limited , right now you cannot compare more than two values , so you might need to see what can be done to extend this code.

second you can make a switch case to return the right method for comparision. 


Using the Expression which could be more compact and will be cleaner code. I have not tried this yet. 
Avoid using private variable naming with capital letters. 
Avoid giving a name where two capital letters are at start (OMagic), you could write this like OperationMagic.
Avoid boxing and unboxing (if your operations are small dont worry).