Quelle est la meilleure façon de vérifier si System.Collections.Generic.List<T> est mis à jour (C# 4.0) ?

StackOverflow https://stackoverflow.com//questions/25055270

Question

Je dois identifier si une liste est mise à jour (élément ajouté/supprimé).je dois utiliser System.Collections.Generic.List<T>, je ne peux pas utiliser ObservableCollection pour cela (et abonnez-vous à c'est CollectionChanged événement).

Voici ce que j'ai essayé jusqu'à présent :

j'utilise Fody.PropertyChanged au lieu de mettre en œuvre INotifyPropertyChangedEvent - Propriété Fody modifiée sur GitHub

[AlsoNotifyFor("ListCounter")]
public List<MyClass> MyProperty
{get;set;}

public int ListCounter {get {return MyProperty.Count;}}

//This method will be invoked when ListCounter value is changed
private void OnListCounterChanged()
{
   //Some opertaion here
}

Existe-t-il une meilleure approche.S'il vous plaît laissez-moi savoir si je fais quelque chose de mal, afin que je puisse m'améliorer.

Était-ce utile?

La solution

Vous pouvez utiliser des méthodes d'extension :

    var items = new List<int>();
    const int item = 3;
    Console.WriteLine(
        items.AddEvent(
            item,
            () => Console.WriteLine("Before add"),
            () => Console.WriteLine("After add")
        )
        ? "Item was added successfully"
        : "Failed to add item");

Méthode d'extension elle-même.

public static class Extensions
{
    public static bool AddEvent<T>(this List<T> items, T item, Action pre, Action post)
    {
        try
        {
            pre();
            items.Add(item);
            post();
            return true;
        }
        catch (Exception)
        {
            return false;
        }
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top