using System.Collections.Generic;
public static void Main()
var invoker = new Invoker<Obj>();
invoker.Test(new Obj(), new Obj());
invoker.Test2(new Obj(), new Obj());
public class Invoker<T> where T: class
public bool Test(T obj, T obj2)
public bool Test2(T obj, T obj2)
return ((dynamic)obj).Equals(obj2);
public bool Equals(Obj obj)
Console.WriteLine("T.Equals");
public override bool Equals(object obj)
Console.WriteLine("object.Equals");