首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在事件中使用带有自定义参数的委托

在事件中使用带有自定义参数的委托
EN

Stack Overflow用户
提问于 2013-10-15 07:24:57
回答 1查看 767关注 0票数 1

我有下面的代码。我遇到的问题是,这部分代码会产生编译错误。

代码语言:javascript
复制
Changed(this, new ListChangedEventArgs(Operation.Add, e.Value, 1));

使用泛型类型'CustomDatastructures.Core.ListChangedEventArgs‘的错误1需要一个类型参数

第二个问题是如何调用onChanged方法。

代码语言:javascript
复制
//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类的定义

代码语言:javascript
复制
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)
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-15 07:56:56

您正在声明您的ObservableCollection类型为T。此集合具有一个事件ListChanged<T>。但是,您将此事件称为ListChanged<ListChangedEventArgs<T>>。所以你必须改变你的活动声明:

代码语言:javascript
复制
public event ListChanged<ListChangedEventArgs<T>> Changed;
protected virtual void OnChanged(object sender, ListChangedEventArgs<T> e)
{
    if (Changed != null)
        Changed(this, e);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19375450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档