【发布时间】:2013-09-18 04:17:02
【问题描述】:
我试图在我的程序中使用协方差,但是当我在我的方法中使用Expression<Func<T>> 作为参数时,我收到以下错误
参数必须是输入安全的。方差无效。
类型参数 T 必须在Expression <TDelegate>上始终有效
有没有办法在方法中使用表达式作为参数以及协方差?
以下示例
class Program
{
static void Main(string[] args)
{
var temp = new Temp<People>();
TestMethod(temp);
}
public static void TestMethod(ITemp<Organism> param)
{
}
}
class Temp<T> : ITemp<T>
where T : Organism
{
public void Print() {}
public void SecondPrint(Expression<Func<T>> parameter) {}
}
class People : Organism {}
class Animal : Organism {}
class Organism {}
interface ITemp<out T> where T : Organism
{
void SecondPrint(Expression<Func<T>> parameter);
}
【问题讨论】:
标签: c# c#-4.0 generics covariance