如果需要做一個類的重寫,需要重新寫這個類的所有屬性和函數,本文提供一個簡單的方法讓大家快速重寫一個類的所有屬性和函數 ...
如果需要做一個類的重寫,需要重新寫這個類的所有屬性和函數,本文提供一個簡單的方法讓大家快速重寫一個類的所有屬性和函數。
在有 Resharper 之後,對一個比較長的類進行重構。例如有這個類
class Foo
{
public string F1 { get; set; }
public void F2()
{
}
}
來寫出這個類
class Foo1
{
private Foo _foo;
public Foo1(Foo fooImplementation)
{
_foo = fooImplementation;
}
public string F1
{
get { return _foo.F1; }
set { _foo.F1 = value; }
}
public void F2()
{
_foo.F2();
}
}
難道需要自己全部寫一遍?實際上可以使用這個方法來快速寫。
使用 ctrl+shift+R 把 Foo 弄出一個介面
可以看到介面
internal interface IFoo
{
string F1 { get; set; }
void F2();
}
寫另外的類繼承這個介面
class Foo1 : IFoo
{
private IFoo _foo;
public Foo1(IFoo foo)
{
_foo = foo;
}
}
在這個類按 alt+insert 可以看到 Delegating Members ,點擊
這樣就可以拿到這個類的所有屬性和函數
class Foo1 : IFoo
{
public void F2()
{
_foo.F2();
}
private IFoo _foo;
public Foo1(IFoo foo)
{
_foo = foo;
}
public string F1
{
get => _foo.F1;
set => _foo.F1 = value;
}
}
如果需要複製一個類,可以使用 ctrl+shift+R 點擊 Copy Type
複製一個類可以複製靜態屬性、方法,拿到類的介面不能獲得靜態的屬性方法。
同時歡迎大家訪問我搭建的博客 使用 Resharper 快速做適配器 我自己搭建的博客會不斷更新
本作品採用知識共用署名-非商業性使用-相同方式共用 4.0 國際許可協議進行許可。歡迎轉載、使用、重新發佈,但務必保留文章署名林德熙(包含鏈接:http://blog.csdn.net/lindexi_gd ),不得用於商業目的,基於本文修改後的作品務必以相同的許可發佈。如有任何疑問,請與我聯繫。