Beliebige Klasse übergeben

Kai_Jack

Erfahrenes Mitglied
Hallo Peoples,

ich möchte gerne an eine Klasse beliebige Klassen übergeben, die von einer Mutterklasse abgeleitet sein müssen übergeben. Es gibt drei Mutterklassen die wiederum jeweils beliebige eigene Unterklassen haben können die aber namentlich etc. noch nicht feststehen. Hier mein Beispiel, könnt Ihr mir ein paar Tips geben, wie man das besser machen kann? In der Methode CreateMyProducts sollen diese Klassen übergeben werden können, ich habe momentan Object genutzt, aber das geht sicher besser :-)

Code:
 public abstract class Factory
    {
        protected AbstractFactory()
        {
            TheProducts = new ArrayList();
        }

        private ArrayList theProductTable = null;

        public ArrayList TheProducts
        {
            get
            {
                return this.theProductTable;
            }

            set
            {
                this.theProductTable = value;
            }
        }

        public ArrayList CreateMyProducts(Object ob)
        {
            if (ob != null && ob.GetType().IsClass && !theProductTable.Contains(ob) )
            {
                    this.AddToTable(ob);
            }
            return this.theProductTable;
        }

        private void AddToTable(Object ob)
        {
            theProductTable.Add(ob);
        }

    }
 
Hi,

vorsicht, an CreateMyProducts übergibst du Objekte, keine Klassen.
Für dein Problem sehe ich 2 Lösungen:

Entweder erben die Mutterklassen von einer gemeinsamen Mutterklasse.
Dann ersetze einfach Object in
public ArrayList CreateMyProducts(Object ob)
Durch den Typ dieser Klasse.

Der andere Weg wäre für jede der 3 Mutterklassen eine CreateMyProducts Methode
zu implementieren in denen ein Objekt vom Typ der Mutterklasse verwendet wird.

Allgemein betrachtet finde ich deine jetzige Implementierung für .NET 1.1 ok,
denn du benötigst nur Object in der Klasse, es gibt also keine Typumwandlungen.

Wenn du .NET 2.0 verwenden würdest, könnte der Rückgabewert von TheProducts
auch Typinformationen enthalten,
public List<Pruduct> TheProducts wäre da bestimmt besser.

Gruß
 
Zurück