4

プログラムで共分散を使用しようとしています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);
    }
4

1 に答える 1