0

我有两个 C# 文件:

  1. EventDel.cs

    public delegate void EventDel(DocdEvent event);
    
  2. HBE.cs其中包含下一个字段:

    public  EventDel<ME> toCatchOne {get; set; }
    

它给了我下一个错误:

Delegate does not have type parameters.

我该如何解决?

4

2 回答 2

1

您的委托似乎不是通用的,请在 HBE.cs 中尝试此操作:

public  EventDel toCatchOne {get; set; }

或者 EventDel.cs 里面的这个:

public delegate void EventDel<HBE>(DocdEvent event);
于 2013-05-04T09:35:25.883 回答
0

EventDel并且EventDel<T>是两种完全不同的类型。它们不兼容。在您的情况下EventDel,只接受一个 type 参数DocdEvent。并且类型EventDel<ME>只接受类型的参数ME(无论是什么)。

要使您的代码正常工作,请尝试:

public  EventDel<ME> toCatchOne {get; set; }

必须转换为:

public  EventDel toCatchOne {get; set; }

或修改您的第一个委托:

public delegate void EventDel(DocdEvent event);

进入:

public delegate void EventDel(ME event);

在最后一种情况下,您仍然使用两种不同类型的委托,但如果您想将一个委托转换为另一种委托,请使用构造函数:

EventDel d1 = ...;
EventDel<ME> d2 = new EventDel<ME>(d1);
于 2013-05-04T09:49:26.293 回答