我试图在我的程序中使用协方差,但是当我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);
}