object zu laufzeit casten

sra

Erfahrenes Mitglied
Hallo

Ich habe eine Klasse geschrieben, welche eine kleine Kollisionsabfrage für das Objekt übernimmt, welches die Klasse instanziert hat. Da ich in der Klasse selber auf gewisse Eigenschaften des übergeordneten Objekten zugreifen muss, übergebe ich der Klasse dieses Objekt.

Mein Problem ist, dass ich die Kollisionsabfrage für verschiedene Objekte haben will. Das heisst, dass alle Objekte (implementieren alle das Interface "IMoveableElements"), welche sich auf dem Bildschirm bewegen eine solche Klasse haben müssen.

Leider weiss ich in der Klasse selber also nicht welches Objekt nun kommt, und kann daher keine Variable für dieses Objekt bereitstellen ausser eben einer object-Variable.

Meine Frage: Wie kann ich diese in den Typ des Objektes "casten", obwohl ich noch nicht weiss welches Objekt kommt?
Oder würde ich besser mit einer abstrakten Basisklasse arbeiten, als mit einem Interface?

Danke
 
PROBLEM

Also das mit der Interfacevariablen klappt gut. Nur habe ich jetzt ein anderes Problem.

Da jedes bewegliche Element (IMoveableElements) ein Objekt der Klasse collisionControl haben muss (welche dann eben die Kollisionsabfrage für das Element übernimmt), habe ich das mit ins Interface genommen:

Code:
	interface IMoveableElements
	{
		void Move();
		collisionControl CollisionControl;
	}

Nun hat er aber zu beanstanden, dass keine Felder in Interfaces definiert werden dürfen.

Hat jemand eine Idee, wie ich das trotzdem da rein kriege?
 
Hallo.

Nimm ein Property/eine Eigenschaft.

Code:
interface IMoveableElements
{
	void Move();
	collisionControl CollisionControl { get; set; };
}

So siehts Interface dann aus.
 
Zurück