泛型类可以使用泛型委托声明,如下所示,但这是不幸的元数据。我找不到完整的例子:
public abstract class Expression
{
public static Expression<TDelegate> Lambda<TDelegate>(Expression body, bool tailCall, IEnumerable<ParameterExpression> parameters);
}
在这里TDelegate是一个Func&lt;&gt ;.你能写一个使用泛型委托的泛型类示例吗?我找不到那样的例子。
答案 0 :(得分:0)
在约束委托类型时,通用参数不会有太大帮助。除非您想使用通用参数而不是使用常规typeof
关键字或Object.GetType
方法传递委托类型,否则没有实际用例:
public void DoStuff<TDelegate>()
// vs.
public void DoStuff(Type delegateType);
代表不是课程,他们不支持继承和类和接口可用的其他功能。您可以做的是约束委托的通用参数。
例如,您希望Func<T>
约束T
为IWhatever
:
public void DoStuff<T>(Func<T> func) where T : IWhatever
{
}