我有两个C#文件:
EventDel.cs
:
public delegate void EventDel(DocdEvent event);
HBE.cs
包含下一个字段:
public EventDel<ME> toCatchOne {get; set; }
它给了我下一个错误:
Delegate does not have type parameters.
我该如何解决?
答案 0 :(得分:1)
您的委托似乎不是通用的,请在HBE.cs中尝试:
public EventDel toCatchOne {get; set; }
或者在EventDel.cs中:
public delegate void EventDel<HBE>(DocdEvent event);
答案 1 :(得分:0)
EventDel
和EventDel<T>
是两种截然不同的类型。它们不兼容。在您的情况下,EventDel
只接受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);