プログラムで共分散を使用しようとしていますExpression<Func<T>>
が、メソッドでパラメーターとして使用すると、次のエラーが発生します
パラメータは入力セーフでなければなりません。差異が無効です。
Type パラメーター 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);
}