Ja, Resharper kann das tun. Mit Cursor in Ihrem Typ, öffnen Sie den „Code generieren“ -Menü (Alt + Ins je nach Einstellungen oder ReSharper -> Bearbeiten -> Code generieren), und wählen Sie „Equality-Mitglieder“:
Es öffnet sich ein Fenster, in dem Sie festlegen, welche Elemente verwendet werden für die Gleichstellung, zusammen mit einigen Optionen über den generierten Code (zB sollte IEquatable<T>
Ihre Art implementieren) auswählen:
Wenn Sie mit einem einfachen Typ mit zwei Eigenschaften beginnen:
class Person
{
public string FirstName { get; private set; }
public string LastName { get; private set; }
}
Dann wird der generierte Code wie etwas aussehen:
class Person : IEquatable<Person>
{
public string FirstName { get; private set; }
public string LastName { get; private set; }
public bool Equals(Person other)
{
if (ReferenceEquals(null, other))
return false;
if (ReferenceEquals(this, other))
return true;
return string.Equals(FirstName, other.FirstName) && string.Equals(LastName, other.LastName);
}
public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj))
return false;
if (ReferenceEquals(this, obj))
return true;
if (obj.GetType() != this.GetType())
return false;
return Equals((Person)obj);
}
public override int GetHashCode()
{
unchecked
{
return ((FirstName != null ? FirstName.GetHashCode() : 0) * 397)^(LastName != null ? LastName.GetHashCode() : 0);
}
}
}
Gerade Typ entspricht und drücken Sie die Tabulatortaste. –