【发布时间】:2016-02-15 16:43:10
【问题描述】:
给定以下两个类
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 来继承它,它用于更容易读取/写入 DataTables -
public abstract class DRHelper : IEquatable<DRHelper>, IDisposable {
}
我最初的直觉是让 Foo 成为一个界面,但我不知道这是否可行,我希望有人能给我一些关于如何处理这个问题的指导。
【问题讨论】:
-
接口。答案是接口 :) 但是,您应该小心不要为了重用代码而继承。这不是对继承的适当使用(封装通常是代码重用的首选)。
-
“我最初的直觉是让 Foo 成为一个接口” 这样做。
-
@Codor
Foo不需要继承任何东西 - RemoteFoo 需要继承DRHelper。 -
这里的界面很完美
标签: c# inheritance abstract-class