あなたが見つけたように、他の答えは部分的にしか正しかった。
問題: 2つの異なるクラスのいずれかのオブジェクトを作成していて、後で選択したオブジェクトに対して、、またはメソッドを呼び出しLoadContent()
たい場合Draw()
。Update()
KystExtract
2つのクラスを想定しKystExtraction
、共通の基本クラスを使用するか、インターフェイスを共有する必要があります。KrystBase
そうでない場合は、メソッドを定義するもの(たとえば、IKryst)を作成/追加する必要がありますLoadContent()
。
保存するプロパティは基本クラスのタイプ/インターフェイスであるため、KystExtract
オブジェクトまたはオブジェクトのいずれかを保持できKystExtraction
ます。
コードは次のようになります(共通の基本クラスがなく、インターフェイスを使用していると仮定します)。
public class EcranJeu : AffichageJeu
{
private IKystObject décor; // for example
public EcranJeu(string choixecran)
{
if (choixecran == "0")
{
décor = new KystExtract();
}
if (choixecran == "1")
{
décor = new KystExtraction();
}
}
public override void LoadContent()
{
décor.LoadContent(content);
}
}
// Common interface for classes requiring shared behavior
public interface IKystObject
{
public override void LoadContent();
public override void Update();
public override void Draw();
}
// Both classes implement your common interface
public class KystExtract : IKrystObject
{
... Implementation of LoadContent, Update and Draw
}
// Both classes implement your common interface
public class KystExtraction : IKrystObject
{
... Implementation of LoadContent, Update and Draw
}