正如您发现的那样,另一个答案只是部分正确。
问题:您正在创建两个不同类之一的对象,然后想要在所选对象上调用LoadContent()
、Draw()
或方法。Update()
我必须假设这两个类KystExtract
并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
}