鑑於以下兩類如何聲明兩個類,以便它們可以傳遞給相同的函數?
public class LocalFoo {
}
public class RemoteFoo {
}
這兩個類都應該有類似的特性:
public string strBar{ get; set; }
public int intBar{ get; set; }
區別在於如何將這些屬性設置和讀取 - 在性能本地處理在前一種情況下 - 由程序。在後者中,這些屬性直接從數據庫中讀取和寫入一個DataTable。
我知道繼承必須在這裏發生,但這就是我陷入困境的地方。
例如,如果我聲明的方法TakesFoo
:
public void takesFoo(Foo bar){
/*Magic Happens Here*/
}
我想,爲了能夠調用該方法與任一類型的LocalFoo
或RemoteFoo
的對象。
我知道我可以寫一個抽象類Foo:
public abstract class Foo{
}
,並有LocalFoo和RemoteFoo都從它繼承,但有一個警告 - 我還有一個抽象類,我需要RemoteFoo繼承被用來製作它更容易讀/寫/從數據表 -
public abstract class DRHelper : IEquatable<DRHelper>, IDisposable {
}
我最初的本能是讓富的接口,但我不知道這是否會工作,我希望有人可以給我如何我一些方向應該處理這個問題。
接口。答案是界面:)但是,你應該小心,你不是爲了重用代碼而繼承。這不是適當的繼承使用(封裝通常是代碼重用的首選)。 –
*「我最初的本能是讓Foo成爲一個界面」*做到這一點。 –
@Codor'Foo'不需要繼承任何東西--RemoteFoo需要繼承'DRHelper'。 – Will