私は2つの基本クラスのパラメータを受け入れる関数を持っています。この関数では、いくつかの派生クラスにわたってこれらのパラメータの型をテストし、多態関数を呼び出すことを望みます。コンパイルされない私の最初の試みを見るには、以下を参照してください。実行時に派生クラスを決定し、多態性メソッドを呼び出す方法
public static double Intersect(baseClass s0, baseClass s1)
{
if (s1 is derivedClassB) return (s0 as derivedClassA).PolyMethod((derivedClassB)s1);
else if (s1 is derivedClassC) return (s0 as derivedClassA).PolyMethod((derivedClassC)s1);
else return 0.0;
}
私は私が
Type dType = s0.GetType();
(s0 as dType).PolyMethod(derivedClassB) s1);
のようなものを使用することができますが、これはどちらか動作しませんと思いました。
のように簡略化することができ、この
のような派生クラスを定義し、この
のようなあなたの基本クラスを定義します。 – Simon
申し訳ありません私の試行された単純化で何かが間違っていた...今すぐ書式設定されたokを考えて – gwizardry
C#で多態的メソッドの組み込みサポートを使用しない理由はありますか? * virtual *キーワード? –