【发布时间】:2019-08-25 23:37:46
【问题描述】:
我正在重塑一个不使用基类和基接口的整个系统。
我这样做的想法是将所有常用方法提取到基类和基接口中。
所以基本上,我们会有:
实现接口
ISomeClassBase的基类SomeClassBase实现
ISomeClassDerived的派生类SomeClassDerived(此接口派生自ISomeClassBase)
现在的问题是,我如何在派生类中实例化“_mySession”(与基类中的强制转换不同),同时保留基类中的所有方法:
public class SomeClassBase : ISomeClassBase
{
public IMySessionBase _mySession = MySession.Instance();
public SomeClassBase ()
{
_mySession.connect(); // Needed??
}
public void doSomething()
{
_mySession.doSomething();
}
}
public class SomeClassDerived : SomeClassBase, ISomeClassDerived
{
public IMySessionDerived _mySession = MySession.Instance();
public SomeClassDerived ()
{
_mySession.connect();
}
public void doSomethingElse()
{
_mySession.doSomethingElse();
}
}
还有一点,IMySessionDerived 实现了IMySessionBase。
【问题讨论】:
-
但是
SomeClassBase和SomeClassDerived之间没有层次结构连接(它们都实现了ISomeClassBase,但都是独立的)那么问题是什么? -
问题是_mySession的实例化。如果我创建派生类的新实例。我不确定构造函数是否应该在基类中。还是应该?基类中的 _mySession 是否与派生类中的重铸版本相同?
-
“重铸” ? 基类 ?再次......
SomeClassBase和SomeClassDerived之间没有联系 -
_mySession 在基类中有强制转换“IMySessionBase”,但在派生类中有 IMySessionDerived。
-
class SomeClassBase : ISomeClassBaseclass SomeClassDerived : ISomeClassDerived你的代码中的SomeClassDerived不是从SomeClassBase派生的
标签: c# inheritance interface multiple-inheritance