クラスの構造例は次のとおりです。
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