public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
if (obj.GetType() != GetType()) return false;
var value = obj as Class1;
if (value == null) return false;
return
Prop0 == value.Prop0;
}