2013-07-23 39 views
2

我被問是否有任何選項做這樣的事情,在C#中,可以說我們得到了suche代碼:C#自動化構造重構

class A 
{ 
    public A(int b); 
} 

class B : A 
{ 
    public B(int b) 
    : base(b); 
} 

class C : B 
{ 
    public C(int b) 
    : base(b) 
} 

,現在,如果我想在A類變更爲「int b 「到」汽車B「我需要在每一個類中改變這一點,是否有可能重構這種以某種方式自動化?

+0

如果您沒有指定顯式實例構造函數,那麼唯一自動構造函數是無參數的構造函數。在這種情況下,編譯器將在'abstract'類中創建一個類似'public ClassName():base(){}'(或'protected')的構造函數。 –

回答

0

如果可能的話,你可以使用C# Generics

class A<T> 
{ 
    public A(T b) 
    {} 
} 

class B<T> : A<T> 
{ 
    public B(T b) 
    : base(b) 
    {} 
} 

class C<T> : B<T> 
{ 
    public C(T b) 
    : base(b) 
    { } 

} 

您可以使用INT以下語法(和使用汽車的原理相同):

var intVar = new C<int>(10); 

否則,沒有工具一次更改所有類型。如果將參數類型更改爲Car,Resharper會建議您重構派生類的構造函數。