Yes, you will have to use reflection, because the base class knows nothing about derived classes. But why do you want to implement that function in the base class? Why not in the derived classes?
Further there is a standard way to do this by overriding Object.GetHashCode() and Object.Equals().