2011-02-02 63 views
7

是否有可能產生的一類平等成員,其中也將包括從它的基類成員?ReSharper的 - 產生的平等成員,包括基類成員

例如 - 抽象基類:

public abstract class MyBaseClass 
{ 
    public int Property1; 
} 

其他類:

public class MyOtherClass: MyBaseClass 
{ 
    public int Property2 {get; set;} 
} 

如果我自動生成與ReSharper的平等成員,我得到平等對待的僅基於MyOtherClass.Property2財產,不也是對Property1從它的基類。

回答

10

首先產生在基類平等檢查,然後做它的後代。

於下降,差異將在public bool Equals(MyOtherClass other)類。

沒有在基類相等檢查:

public bool Equals(MyOtherClass other) 
{ 
    if (ReferenceEquals(null, other)) 
     return false; 
    if (ReferenceEquals(this, other)) 
     return true; 
    return other.Property2 == Property2; 
} 

隨着在基類平等的檢查:

public bool Equals(MyOtherClass other) 
{ 
    if (ReferenceEquals(null, other)) 
     return false; 
    if (ReferenceEquals(this, other)) 
     return true; 
    return base.Equals(other) && other.Property2 == Property2; 
} 

通知所添加的呼叫到base.Equals(other),它因此變爲負責在屬性基類。

注意,如果你周圍做它的其他方式,你第一次平等檢查添加到後代,然後將它們添加到基類,然後ReSharper的不走,並追溯修改了後代的代碼,你要麼必須重新生成它(刪除+產生),或通過手動修改代碼。

+3

再生,你不需要刪除。生成時,可以選擇替換現有成員。 – 2011-02-02 14:26:24

相關問題