小编典典

一种将基本类型转换为派生类型的方法

c#

我不确定这是否是一件奇怪的事情,或者这是否是某种代码的味道…但是我想知道是否有一种方法(某种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());
}

我知道这看起来很愚蠢,但是有什么办法可以完成这种事情吗?


阅读 331

收藏
2020-05-19

共1个答案

小编典典

不太好用“托管”语言。这是 垂头丧气的
,并且没有合理的方法来处理它,这正是您所描述的原因(子类提供的不仅仅是基类-“更多”是从哪里来的?)。如果您确实希望特定层次结构具有类似的行为,则可以将构造函数用于派生类型,这些派生类型会将基本类型作为原型。

可以用反射来构建一些可以处理简单情况的东西(没有加法状态的更具体的类型)。通常,只需重新设计就可以避免该问题。

编辑:糟糕,无法在基本/派生类型之间编写转换运算符。微软试图“保护您”免受自己攻击的怪异行为。嗯,至少它们远没有Sun差。

2020-05-19