This is the tenth and final in a series of quick how-to articles on ReSharper. There are obviously many more awesome features to explore, but I want to give equal time to the other available productivity tools for Visual Studio. Next week I will be starting a new series of tips on Telerik JustCode. Following that series, I will take a look at DevExpress CodeRush.
Tip #10 – Generate Equality Members
Use: If you are creating a class that will need to participate in equality operations, ReSharper can quickly generate the necessary method implementations for you.
Before
1: public class Order : IOrder
2: {
3: public int OrderId { get; set; }
4:
5: public int CustomerId { get; set; }
6:
7: public DateTime OrderDate { get; set; }
8:
9: public IList<OrderDetail> OrderDetails { get; set; }
10: }
Click Generate Code
Select Equality Members
Select options and finish
After
1: public class Order : IOrder, IEquatable<Order>
2: {
3: public int OrderId { get; set; }
4:
5: public int CustomerId { get; set; }
6:
7: public DateTime OrderDate { get; set; }
8:
9: public IList<OrderDetail> OrderDetails { get; set; }
10:
11: public bool Equals(Order other)
12: {
13: if (ReferenceEquals(null, other)) return false;
14: if (ReferenceEquals(this, other)) return true;
15: return other.OrderId == OrderId;
16: }
17:
18: public override bool Equals(object obj)
19: {
20: if (ReferenceEquals(null, obj)) return false;
21: if (ReferenceEquals(this, obj)) return true;
22: if (obj.GetType() != typeof (Order)) return false;
23: return Equals((Order) obj);
24: }
25:
26: public override int GetHashCode()
27: {
28: return OrderId;
29: }
30:
31: public static bool operator ==(Order left, Order right)
32: {
33: return Equals(left, right);
34: }
35:
36: public static bool operator !=(Order left, Order right)
37: {
38: return !Equals(left, right);
39: }
40: }
Happy coding!