2012-07-13 70 views
1

我有一個屬性A在基類Base的所有小類中。
如何生成屬性A的抽象屬性定義到基類Base如何自動將屬性聲明覆制到基類

我知道ReSharper的重構拉會員最多,但移動的財產,以基類。

我需要在基類的抽象屬性,並在所有子類一個首要性能。是否有重構在Visual StudioReSharper可以做到自動對我來說?

回答

2

有一個複選框「使抽象的」對以ReSharper的拉會員的對話框: enter image description here

+0

哦,已經監督複選框。你的回答正是我所尋找的。 – thersch 2012-07-13 11:46:08

+0

Unforunatly * Pull Members Up *不會自動更新其他子類(通過使其覆蓋*)。 – thersch 2012-07-13 12:01:31

+1

您可以對請求進行投票,在此處進行修復http://youtrack.jetbrains.com/issue/RSRP-275311 – 2012-07-18 11:41:32

0

我不知道ReSharper的可以移動起來,爲你自動創建需要一個抽象的,但你可以ATLEAST手動定義它像這樣

在抽象類:

public abstract double A 
{ 
    get; 
} 

在子類:

public override double A 
{ 
    get 
    { 
     return 3.141; 
    } 
} 

定義新接口(或使用現有接口)並定義接口中的屬性可能是一個更清晰的設計。這樣,您現有的子類將不必使用override

+0

對不起,我的問題描述不佳。我正在尋找一個工具(例如ReSharper中的重構功能)來爲我做這件事。 – thersch 2012-07-13 11:43:14

+0

啊是的,我也認爲,也許你不知道如何手動執行,無論是(語法),所以這就是我試圖展示。 – 2012-07-13 11:44:26

+0

我已經更新了我的問題。抱歉。 – thersch 2012-07-13 11:48:37

0
public interface IInterface { 
    string MyProperty { get; } 
} 

public class Class : IInterface { 
    public string MyProperty { get; set; } 
} 


public abstract class AbstractClass { 
    public abstract string Value { get; } 
} 

public class ConcreteClass : AbstractClass { 

    private string m_Value; 
    public override string Value { 
     get { return m_Value; } 
    } 

    public void SetValue(string value) { 
     m_Value = value; 
    } 
} 

我希望這將有助於你。