【发布时间】:2014-02-20 16:36:40
【问题描述】:
我有一个基类BaseClass,它有一个纹理或位图。两个类派生自它,比如说AChild 和BChild。每个子类设置纹理。现在每个子类的纹理将保持不变。我不希望每个子类的对象有多个纹理变量。我希望它是单例的。
这是一些代码。
abstract class BaseClass
{
public Texture TextureImage { get; set; }
public Texture LoadTexture(string path)
{
return some texture using path,
}
}
class AChild : BaseClass
{
AChild()
{
if (TextureImage == null)
TextureImage = LoadTexture(PathToImageA);
}
}
class BChild : BaseClass
{
BChild()
{
if (TextureImage == null)
TextureImage = LoadTexture(PathToImageB);
}
}
Main()
{
var aOne = new AChild();
var aTwo = new AChild();
var bOne = new BChild();
var bTwo = new BChild();
}
现在您可以看到,每当我创建AChild 或BChild 的对象时,都会创建一个新纹理。我想要实现的是,每当创建 AChild 的第一个孩子(aOne)时,应该初始化 TextureImage,并且当创建另一个对象(aTwo)时,它使用第一个孩子创建的纹理。
我尝试在基类中将 TextureImage 设为静态,但之后 bOne 纹理是 aOne 创建的。
我确信这可能是我想要的,但问题是如何实现?
【问题讨论】:
-
听起来您需要在子类中进行覆盖或将基类设为接口并在子类中实现静态。
-
@crashmstr 你能帮我写代码吗,我正在尝试这样做但失败了。
-
只需删除 AChild 类中 == null 的测试并使 TextureObject 成为静态即可。 BChild 仍然测试 null。
-
@Steve 他希望所有
AChild都有一个TextureImage和PathToImageA,所有BChild都有一个不同 和PathToImageB的。跨度>
标签: c# inheritance static