2017-07-23 3 views
0

Ich bin ziemlich neu in C# also bitte entschuldigen Sie meine Anfänger Frage. Ich habe bereits gesucht, aber nicht die Lösung gefunden, die ich wollte.Erstellen eines Objekts einer zufälligen Unterklasse in C#

Ich habe eine abstrakte Klasse und mehrere Unterklassen davon. Lassen Sie uns einfach subclass1 bis subclass9 sagen.

Was ich jetzt tun möchte, ist ein Objekt aus einer zufälligen Unterklasse zu generieren. Eigentlich hätte ich gerne einige Listen mit einer Vorauswahl dieser Klassen. Wie: Liste1 einschließlich Unterklassen 1, 3, 4 und 6, Liste2 einschließlich 1, 2, 5, 6 und 9 und so weiter. So kann ich jederzeit sagen: Gib mir ein zufälliges Objekt von List2.

Meine Idee war, Arrays zu generieren und diese Unterklassen in sie einzufügen, dann ein zufälliges Element des Arrays auswählen. Aber das hat für mich nicht geklappt. Ich habe nicht herausgefunden, wie man die Arrays mit Objekten füllt, also bin ich mir nicht sicher, ob dies nicht möglich ist oder ich habe einfach nicht die richtige Syntax gefunden. Kann mir jemand sagen, wie man diese Listen erstellt?

Da frage ich mich schon: Gibt es eine einfache Möglichkeit, den Objekten in den Listen unterschiedliche Wahrscheinlichkeiten zu geben?

Edit: Eigentlich versuche ich zu verstehen, wie man etwas wie dies im Allgemeinen in einer anderen Situation zu behandeln.

Zum Beispiel: Ich habe eine abstrakte Klasse Artikel. Ich könnte verschiedene Unterklassen wie Trank, Dolch, scroll und so weiter haben. Jetzt möchte ich nach einem Kampf einige zufällige Beute erzeugen, vielleicht zwei zufällige Gegenstände. Aber ich möchte keinen Gegenstand fallen lassen. Zum Beispiel möchte ich nicht, dass ein Bär Dolche oder Schriftrollen fallen lässt, sondern eher etwas wie Bärenhaut und ein paar Knochen, die in seiner Höhle geblieben sind. Also brauche ich verschiedene Listen möglicher Beute, aus denen ich zufällige Drops erzeugen kann.

Wie kann ich das tun? Wie gesagt, ich habe versucht, Klassen in ein Array zu setzen, aber ich habe nicht herausgefunden, wie das geht. Nicht einmal sicher, ob das die richtige Idee war.

Ich dachte, wie man bestimmte Objekte in ein Array oder eine Liste legt. Aber ich möchte nicht 20 Objekte erzeugen, um zufällig zwei auszuwählen und den Rest zu zerstören.

Vielen Dank für jede Hilfe!

+3

Es ist unklar, was genau dein Ziel ist und wo du feststeckst. Haben Sie Probleme, ein Objekt aus einer Liste auszuwählen? Erstellen eines zufälligen Objekttyps? Erstellen einer Liste, die verschiedene Arten von Objekten enthalten kann? Bitte [bearbeiten] Sie Ihren Beitrag, um nur eine * Frage einzubeziehen und zu klären, wofür Sie Hilfe benötigen. –

+1

* "Ich habe versucht, Klassen in ein Array einzuordnen" * - Was meinst du damit? Zeigen Sie den Code, den Sie ausprobiert haben (und erklären Sie, welche Fehler usw. Sie bekommen haben) – UnholySheep

Antwort

0

Sie können factory method mit table of methods Muster verwenden.

private static Func<Item>[] tableOfMethods = 
{ 
    () => new Potion() 
} 

public static Item GetRandomItem() 
{ 
    var randomIndex = generate index here.... 
    return tableOfMethods[randomIndex](); 
} 

P.S. Syntax der Array-Erstellung kann hier falsch sein, schreiben Sie es von Mobile.

+1

Vielen Dank. Das hat mich in eine Richtung geführt, mit der ich arbeiten kann. – JustATourist

Verwandte Themen