Переменная статического изображения для нескольких классов - PullRequest
1 голос
/ 14 июля 2011

В настоящее время я работаю в C #, и у меня есть базовый класс (bullet), который должен иметь переменную и последующий метод getter (изображение), потому что другой класс ожидает такое поведение (powerup) для правильного отображения. Затем пуля будет расширена для создания множества различных пуль с различным поведением. однако, каждому классу расширения маркеров требуется только одно изображение для каждого класса (не для каждого экземпляра), потому что ему никогда не потребуется переключаться между маркерами одного и того же класса, и на экране их будет сотни, так что пространство - это проблема. то есть мне нужен объект в базовом классе, то есть статический в расширениях этого класса. Есть ли способ создать это в C #, а если нет, из любопытства, любой другой объектно-ориентированный язык?

Большое спасибо

редактировать: например:

class bullet{
public Image Level
    {
        get { return image; }
        set { image = value; }
    }

}


class spiralBullet : bullet{
static var image = "spiralbullet";


}



class largeBullet : bullet{
static var image = "largebullet";

}

за исключением случаев, когда получатель возвращает правильное статическое изображение для каждого класса

1 Ответ

1 голос
/ 14 июля 2011

Определите абстрактное свойство Getter для вашего базового класса.

В производном классе используйте личное статическое поле Image.

Переопределите абстрактное свойство Getter и верните поле статического изображения.

public abstract class Bullet
{
    public abstract Image Image { get; }
}

public class SquareBullet : Bullet
{
    private static Image _image /* = Load your image */;

    public override Image Image
    {
        get 
        {
            return _image;
        }
    }
}

В качестве альтернативы, если изображение является простым жестко запрограммированным значением:

public abstract class Bullet
{
    public abstract string Image { get; }
}

public class SquareBullet : Bullet
{
    public override Image Image
    {
        get 
        {
            return "Square";
        }
    }
}

Преимущество здесь, если оно подходит, состоит в том, что значение "Квадрат" существует в сегменте кодане является сегментом данных и является «статическим» (или совместно используемым) по определению.

...