我有以下的類實例結構:開關亞型
public class Base
{
}
public class Child1 : Base
{
}
public class Child2 : Base
{
}
我想要做一些魔法:
Base @base = new Child2(); //note: there @base is declared as Base while actual type is `Child2`
var child1 = (Child1) @base;
它失敗System.InvalidCastException
預期。
然後我說隱式轉換操作符Child2
:
public class Child2 : Base
{
public static implicit operator Child1(Child2 child2)
{
return new Child1();
}
}
和代碼仍然拋出同樣的異常(明確的運營商也沒有幫助)。
如果不使用dynamic
,自定義投射方法或聲明局部變量@base
爲Child2
,您有任何想法如何解決此問題嗎?
那麼,你明確地投下了對象。因此定義一個明確的運算符,而不是隱式的。 –
@Shedal,沒有幫助。 – hazzik