C# - parametr statyczny (typ obiektu)

0

Witam. Chciałbym zrobić tak, aby przy tworzeniu obiektu, możliwe było wybranie do jakiej podklasy będą należeć obiekty, wygenerowane przez daną podklasę (muszę przekazać to wewnątrz metody).

 
// klasa bazowa
Class Enemy
{
[...]
}

// klasa pochodna
Class Simple : Enemy
{
int width, height;
EnemyType type;

// konstruktor wygląda mniej więcej tak:
    public Simple(int Width, int Height, EnemyType.Type)
    {
        width = Width;
        height = Height;
        type = EnemyType.Type; // ?
    }
}

// tworzymy obiekt o danej szerokosci, długości i typie (klasie)
Enemy enemy = new Enemy(int width, int height, Enemy.EnemyType.Simple);

nie mogę znaleźć rozwiązania w internecie (tak naprawdę to nie wiem czego szukać :| ), proszę o pomoc.

Z góry dzięki.

0

To co potrzebujesz to fabryka - wzorzec projektowy.

0

Dzięki za podpowiedź, wziąłem się za to od razu i powstało coś takiego:

Class Enemy
{
//[...]
    public enum EnemyType
    {
        Simple
    }
}
 
// klasa pochodna
Class Simple : Enemy
{
int width, height;
EnemyType type;
 
// konstruktor wygląda mniej więcej tak:
    public Simple(int Width, int Height, Enemy.EnemyType Type)
    {
        width = Width;
        height = Height;
        
        // czy powinienem tutaj rozpisać to na scenariusze?
        // jesli będzie Simple to stworz obiekt Simple, itd?
        //
    }
}
1

Całkiem źle, masz przykładowy pseudokod:

class Enemy
{
    ...
}

class SimpleEnemy : Enemy
{
    ...
}

class ComplexEnemy : Enemy
{
    ...
}

class EnemyFactory
{
    enum EnemyType
    {
        Simple,
        Complex
    }

    Enemy CreatEnemy(EnemyType type)
    {
        switch(type)
        {
        case Simple:
            return new SimpleEnemy();

        case Complex:
            return new ComplexEnemy();
        }
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1