グッドイブニングにクラスを拡張]を選択します例えば、クラスAまたはクラスB私はC#で2つの抽象クラスを持っている誰もが、</p> <p>にランタイムC#
を拡張:
public Class C : B or A
abstracの両方tクラスは、同じシグネチャを持つ1つの抽象メソッドを提供します。
グッドイブニングにクラスを拡張]を選択します例えば、クラスAまたはクラスB私はC#で2つの抽象クラスを持っている誰もが、</p> <p>にランタイムC#
を拡張:
public Class C : B or A
abstracの両方tクラスは、同じシグネチャを持つ1つの抽象メソッドを提供します。
いいえ、コンパイル時に基本クラスが定義されているため、実行時に基本クラスを変更/選択することはできません。
両方のクラスで共通のインターフェイスを実装しているように聞こえますが、それ以外のインターフェイスを使用すると、あなたのケースでは良い解決策になります。
interface IListener
{
void Listen();
...
}
class CA : A, IListener{ .... }
class CB : B, IListener { .... }
// to use:
IListner listener = useSSL ? new CA(...) : new CB(...);
@CodeNotFound実行時に新しいクラスを作成できますが、実行時に基本クラスを変更することはできません。 –
ha!私は最初のコメントを削除しました。うん、それは私が思うものです:D – CodeNotFound
私はあなたの質問やコメント(@RBが言ったことを確認してください)から正しく理解していた場合は、適切な行動を定義するには、次のようになります。
public interface IC
{
}
public class A : IC
{
}
public class B : IC
{
}
は、インターフェイスを消費するようにコードを書くと、正しいコンクリートクラスを消費者に注入する方法を考案する。
設定ファイル –
で指定されたフラグを使用してifループを使用できます。抽象メソッドの実装についてはどうですか? – CodeNotFound
実際に達成しようとしていることを説明してください。これは[XY問題](http://xyproblem.info/)と非常によく似ています。ちょうど絶対に明白であるように - あなたはあなたが尋ねたことをすることはできません。継承はコンパイル時の機能です。実行時に変更することはできません(技術的には、新しいクラスを生成することは技術的には可能ですが、これは決して適切な答えではありません)。 –