【发布时间】:2010-09-12 13:35:21
【问题描述】:
我不确定这是否是一件奇怪的事情,或者它是否是某种代码味道......但我想知道是否有办法(某种 oop 模式会很好)将基类型“强制转换”为其派生类型的一种形式。我知道这没有什么意义,因为派生类型将具有父级不提供的附加功能,而这些功能本身并不完全合理。但是有没有办法做到这一点?这是一个代码示例,因此我可以更好地解释我在问什么。
public class SomeBaseClass {
public string GetBaseClassName {get;set;}
public bool BooleanEvaluator {get;set;}
}
public class SomeDerivedClass : SomeBaseClass {
public void Insert(SqlConnection connection) {
//...random connection stuff
cmd.Parameters["IsItTrue"].Value = this.BooleanEvalutar;
//...
}
}
public static void Main(object[] args) {
SomeBaseClass baseClass = new SomeBaseClass();
SomeDerivedClass derClass = (SomeDerivedClass)baseClass;
derClass.Insert(new sqlConnection());
}
我知道这看起来很愚蠢,但是有什么办法可以完成这种事情吗?
【问题讨论】:
-
在这个问题中使用“cast”这个词是错误的。铸造意味着我们铸造的对象已经是这种类型的对象。例如:对象o = 3; MethodWithIntegerParam((int)o);在您的问题中,baseClass 不是用派生类实例化的。所以你要找的是转换而不是投射。
标签: c# oop inheritance design-patterns