我有如下代码。我遇到的问题是这部分代码给出了编译错误。
Changed(this, new ListChangedEventArgs(Operation.Add, e.Value, 1));
错误1使用通用类型'CustomDatastructures.Core.ListChangedEventArgs'需要1个类型参数
第二个问题是如何调用onChanged方法。
//public delegate void ListChanged<TEventArgs>(object sender, TEventArgs e);
public delegate void BeforeListChanged<TEventArgs>(object sender, TEventArgs e);
public delegate void ListChanged<TEventArgs>(object sender, TEventArgs e);
// Make this class generic by adding a type-parameter to the class
public class ObservableList<T> : IEnumerable<T>
{
// Declare an private variabel to work as
// the internal data storage for the list
List<T> observerList = new List<T>();
public event ListChanged<ListChangedEventArgs<T>> Changed;
//public event BeforeListChanged<T> BeforeChanged;
protected virtual void OnChanged(object sender, Operation op, T value, int count)
{
if (Changed != null)
Changed(this, new ListChangedEventArgs(op, value, count));
}
/// <summary>
/// Add and object to the list
/// </summary>
/// <param name="item">An object</param>
public void Add(T item)
{
observerList.Add(item);
OnChanged(this, Operation.Add, item, 1);
}
这是ListChangedEvent类的定义
public class ListChangedEventArgs<T> : EventArgs
{
public int Count { get; }
public Operation Operation { get; }
public T Value { get; }
public ListChangedEventArgs(Operation operation, T value, int count)
}
您要声明您ObservableCollection
的类型T
。此收藏有一个活动ListChanged<T>
。但是您将此事件称为ListChanged<ListChangedEventArgs<T>>
。因此,您必须更改事件的声明:
public event ListChanged<ListChangedEventArgs<T>> Changed;
protected virtual void OnChanged(object sender, ListChangedEventArgs<T> e)
{
if (Changed != null)
Changed(this, e);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句