Quelle est la meilleure façon de vérifier si System.Collections.Generic.List<T> est mis à jour (C# 4.0) ?
-
21-12-2019 - |
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.
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