我正在尝试在我的程序中使用协变(covariance),但是当我在我的方法中使用
Expression<Func<T>>
作为参数时,我会收到以下错误信息:
参数必须是输入安全的。无效的方差。
类型参数T必须在Expression <TDelegate>
上不变地有效。
有没有办法在方法中使用表达式(expression)作为参数以及协变(covariance)?
下面是一个示例:
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);
}