Ich baue ein Spiel in C#, mit dem Sie Ihr eigenes Level skripten können, obwohl ich ein wenig überlegt habe.C# Containerklasse
Ich habe eine Basisklasse namens "Welt" als ein Objekt. Dies wurde mit einem einfachen gemacht:
class World {
Wenn jedoch der Benutzer ihr Niveau ist scripting, alle Spielobjekte werden in der Welt Objekt enthalten sein. Ich möchte sie in der Lage sein, etwas auf den Linien zu tun:
Ich weiß, dass die System.Windows.Forms.Panel
und andere Klassen wie Container und Objekte in ihnen haben können und auf diese Art und Weise zugegriffen werden .. . meine Frage ist, wie kann ich eine Klasse machen, die wie ein Behälter, in dem ich Objekte, und sie dann Zugriff mit einem World.ObjectName
hinzufügen kann ich class World : System.Collections.CollectionBase
versucht, aber mit dieser Methode muss ich World.Item("ObjectName")
halten eingeben
Kann a Nyone Hilfe?
Danke!
Danke, ich habe das versucht und es funktioniert gut. Aber gibt es eine Möglichkeit, 'world.ObjectName' zu machen, weil es sicher möglich ist, weil' System.Windows.Forms.Panel' es schafft! – Jamie
Wenn Sie in der Entwurfszeit ein Steuerelement zu einem übergeordneten Steuerelement hinzufügen, wird dem übergeordneten Steuerelement ein Feld hinzugefügt. Dies geschieht zur Entwurfszeit - vor dem Kompilieren. Sie können dies mit Objekten mit einer langen Anwendungslebensdauer tun, aber wenn Ihre Objekte zur Laufzeit hinzugefügt werden, ist dies nicht möglich (es sei denn, Sie führen zur Laufzeit Codegenerierung und -kompilierung durch - was für diesen Fall nicht geeignet ist). –
@Jamie: nicht möglich, wie andere bereits sagten. Wenn Sie es "stark typisiert" haben möchten, d. H. Eine Zeichenfolge, die Tippfehler enthalten könnte, vermeiden, können Sie in dem aufrufenden Code "enum" verwenden, z. 'string value = world [PossibleNames.ObjectName.ToString()];' –