What's the point of inheritance in this case?
我有几个类必须先连接到某个对象,然后才能执行任何操作。所以理想情况下,我用一个带有1个参数的构造函数创建一个基类。然后这些类从这个基类继承,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | public class BaseErase { private string _connectionString; public string ConnectionString { get { return _connectionString; } set { _connectionString = value; } } public BaseErase(string connectionString) { ConnectionString = connectionString; } //public void SetConnection(string connectionString) //{ // ConnectionString = connectionString; //} } |
然后,派生类将从baseerase继承,如下所示:
1 2 3 4 5 6 7 8 | class ToEraseClass : BaseErase { public void GetData() { string connect = ConnectionString; Console.WriteLine(connect); } } |
最后,我实例化类并调用getData():
1 2 |
不幸的是,构造函数不是继承的,所以这些都不起作用。我知道解决这个问题的方法,但它要求我修改每个类。
我的问题是,这里继承的目的是什么?
谢谢。
编辑:在下面的反应:你的评论
In that case, I can just as easily add a method in every class
这是什么做的案例中的继承是消除需要添加在每一个类的方法。因为如果你在每一个类的方法),然后你要保持每一个类的方法。
代码重复的代码是一个非常强大的味道,你应该尽快消除展望
为了消除duplication你可以添加你的关系,例如,"这是connectionfangler类的所有类的基准来管理他们的橡皮擦连接。或是你可以讨论的关系,是通过添加一个fangles基类创建的连接。
如果你所有的基类是做的是设置连接字符串,然后我会说,有一点是在继承。应该是关于一个继承的关系,和不有关系。
因为它看来,你想添加到构造函数调用的基础。
如果你要确保每一个类型的类连接字符串有一擦除,你可以让他们实现一个接口已经是房地产
1 2 3 4 | public IEraseConnection { string ConnectionString {get;set;} } |
然后你可以设置连接字符串的构造函数或直接。如果你的应用程序的最佳作品,以较高者为准。
如果你想使用的是完整的基础类的东西,然后我会像这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | using System; namespace ExampleApp { class Program { static void Main(string[] args) { new ToEraseClass("Boom!").GetData(); Console.ReadLine(); } } public class BaseErase { protected string ConnectionString { get; private set; } public BaseErase(string connectionString) { ConnectionString = connectionString; } } public class ToEraseClass : BaseErase { public ToEraseClass(string connectionString) : base(connectionString) {} public void GetData() { Console.WriteLine(ConnectionString); } } } |