Was ist der beste Weg, um zu überprüfen, ob System.Collections.Generic.List<T> aktualisiert ist (C# 4.0)?
-
21-12-2019 - |
Frage
Ich muss feststellen, ob eine Liste aktualisiert wird (Element hinzugefügt/entfernt).Ich muss es verwenden System.Collections.Generic.List<T>
, Ich kann nicht benutzen ObservableCollection
dafür (und abonnieren Sie es CollectionChanged
Ereignis).
Folgendes habe ich bisher versucht:
ich benutze Fody.PropertyChanged
statt umzusetzen INotifyPropertyChangedEvent
- Fody-Eigenschaft auf GitHub geändert
[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
}
Gibt es einen besseren Ansatz?Bitte teilen Sie mir mit, wenn ich etwas falsch mache, damit ich mich verbessern kann.
Lösung
Sie können Erweiterungsmethoden verwenden:
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");
Erweiterungsmethode selbst.
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;
}
}
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow