/// <summary> /// Konstruktor, der eine Referenz des Players und das Element übernimmt, /// welches gewrappt werden soll. /// </summary> /// <param name="Player">Eine Referenz auf den <seealso cref="Player"/>. /// Darf nicht <see langword="null"/> sein.</param> /// <param name="Element">Das COM Objekt, welches von dieser Instanz /// kontrolliert werden soll. Muss <see cref="global::Liconcomp.IElement"/> /// implementieren und darf nicht <see langword="null"/> sein.</param> internal Element(Player Player, global::Liconcomp.IElement Element) : base() { if (Player == null) throw new ArgumentNullException("Player"); if (Element == null) throw new ArgumentNullException("Element"); this._player = Player; this._object = Element; // Wenn das Objekt schon ein Movement hat, dann übernehmen wir es. if (this._object.Movement != null) this._position = new Movement((global::Liconcomp.IPosition)this.COMObject.Movement); HookEvents(); }
/// <summary> /// Interne Methode um alle Instanzvariablen freizugeben. Diese Methode sollte von /// erbenden Klassen überschrieben werden. /// </summary> /// <param name="Disposing"><see langword="true"/>, wenn der Aufruf vom Garbage /// Collector stammt, sonst <see langword="false"/>.</param> protected override void Dispose(bool Disposing) { // Wir müssen allen erbenden Klassen mitteilen, dass sie ihre Ereignis- // handler entfernen sollen. Ansonsten wird Liconcomp die Objekte niemals // freigeben. UnhookEvents(); this._object = null; this._player.RemoveElement(this); this._player = null; base.Dispose(Disposing); }