コード例 #1
0
        /// <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();
        }
コード例 #2
0
        /// <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);
        }