我想創建一個通用委託。它將委託具有泛型類型作爲參數的函數。使用通用接口參數創建通用委託
例如: 我有一個接口:
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#中的協變和逆變相關聯。# –