C# Listen Objekt selbstzerstörung

DuffCola

Mitglied
Hallo.
Ist es möglich, wenn ich ein Objekt habe, was ich zu einer Liste hinzugefügt habe, das es sich selbst aus der Liste löscht, wenn eine Bool Variable z.B. auf false ist?
Kla ich kann in einer Methode die Liste immer Wieder durchlaufen lassen, und immer checklen, ob die Variable False ist und diese dann zerstören.
Aber ich würde gerne einfach nur wisse, ob es eine art interne selbstzerstörung gibt.
 
Hallo DuffCola,

Das was du machen möchtest schreit förmlich nach dem Observer Pattern. Hier ein einfaches Beispiel:
C#:
    interface ILifetimeObject
    {
        event Action<ILifetimeObject> ObjectDied;
    }

    class UnitObject : ILifetimeObject
    {
        private bool mIsAlive = true;

        public event Action<ILifetimeObject> ObjectDied;


        public void setDead()
        {
            mIsAlive = false;
            if (ObjectDied != null)
                ObjectDied(this);
        }
    }

    class LifetimeManager
    {
        private List<ILifetimeObject> mObjects = new List<ILifetimeObject>();

        private void onObjectDied(ILifetimeObject obj)
        {
            mObjects.Remove(obj);
            obj.ObjectDied -= onObjectDied;
        }

        public void pushObject(ILifetimeObject obj)
        {
            mObjects.Add(obj);
            obj.ObjectDied += onObjectDied;
        }
    }
 
IDisposible ableiten und Dispose() hinzufügen.. Schau mal bei Google.

Dispose lässt die Ressourcen wieder frei, somit wird sie auch aus der Liste entfernt.

MfG
 
Nö, die Liste so weiß erstmal nixs vom Dispose.
So hättest du jetzt erstmal einen Inkonsistenten Zustand eines Objektes in deiner Liste.

Die System.Windows.Forms.Control.ControlCollection, entfernt zwar Controls die disposed werden, aber das handeln das Control und die Liste selbst für sich über entsprechende Ereignisse.
 
Zurück