Có, Resharper có thể làm điều đó. Với con trỏ bên trong loại bạn, hãy mở “Tạo mã” menu (Alt + Ins tùy thuộc vào cài đặt hoặc Resharper -> Edit -> Tạo Mã), và chọn “thành viên bình đẳng”:
này mở ra một cửa sổ nơi bạn có thể chọn những thành viên được sử dụng cho bình đẳng, cùng với một số tùy chọn về các mã được tạo (ví dụ nên loại của bạn thực hiện IEquatable<T>
):
Nếu bạn bắt đầu với một kiểu đơn giản với hai thuộc tính:
class Person
{
public string FirstName { get; private set; }
public string LastName { get; private set; }
}
Sau đó, các mã được tạo có thể giống như thế:
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);
}
}
}
Chỉ cần loại bằng và nhấn Tab. –