0
对不好的标题感到难以缩小这个问题的相关性。在单独的基类中自动将调用强制转换为基类变量
我有两个基本上并行构建的类层次结构:对于BaseObject的每个子类型,都有一个BaseUIObject的子类型。具体原因是因为BaseObjects实际上是脚本化对象(unity),所以我使用另一组类来表示这些脚本对象之一的每个实例。
示例代码:
public abstract class BaseUIObject {
public BaseObject someObject;
public void Setup(BaseObject baseObject)
{ this.baseObject = baseObject; }
}
public class SomeUIObject : BaseUIObject {
public void Setup(SomeObject someObject)
{ base.Setup(someObject); SomeUIObjectSpecificRoutine(); }
private void SomeObjectSpecificRoutine() {
someObject.doSubClassFunction();
}
}
当通过类型SomeObject的目的是SomeUIObject的安装程序时,就变成存储为BaseObject代替SomeObject。有没有干净的方法来防止这种情况发生?
现在我有两个选择是要么在BaseUIObject的每个子类中定义someObject变量,要么每次在SomeUIObject的方法中使用它时显式强制转换(SomeObject)someObject。这些方法都不是很干净,我觉得必须有一些更好的方法来使用继承来实现这一点。
感谢您的任何帮助。
完美 - 这正是我之后我,但缺乏知识能够正常使用谷歌。感谢您的快速回复,会看到这是否有效。 – Cerzi
在SomeUIObject的类型/名称空间的Setup()arg中找不到类型T的问题。 我也许应该注意到,BaseUIObject本身从另一个类继承,所以其实际的定义是: 公共抽象类BaseUIObject:OtherBaseClass其中T:BaseObject –
Cerzi
T型是你使用的继承声明的类型。你的代码现在如何? –