我想创建一个通用委托。它将委托具有泛型类型作为参数的函数。使用通用接口参数创建通用委托
例如: 我有一个接口:
public interface IProblemState<T> : IComparable<IProblemState<T>>, IEquatable<IProblemState<T>>
where T : IEquatable<T>
{}
而且我有两个不同的类
public class Class1 : IEquatable<Class1>
{ }
public class Class2 : **IProblemState<Class1>**
{ }
后,我有一个委托
public delegate SortedSet<IProblemState<T>> ExpanderDelegate<T>(IProblemState<T> currentState)
where T : IEquatable<T>;
我无法创建具有派生类参数(Class 2的实例)的函数的委托。
例如:
SortedSet<**Class2**> expander(**Class2** currentState)
{}
ExpanderDelegate<Class2> expanderDel = new ExpanderDelegate(**expander**);
当我想创建委托,我得到下面的错误。
无过载为“膨胀”匹配委托“ExpanderDelegate”
我想用这个委托与已经得到的参数全部功能。
C#可以吗?
谢谢。
哇类是非常复杂的,你可以简化问题的更多信息,请。我认为你的问题与C#中的协变和逆变相关联。# –