c# – 当泛型类型约束相同时,为什么会出现“无效参数”错误?

在下面的代码中,我在’action(u)’,“Invalid Parameters”中收到错误,即使泛型的类型约束是相同的.为什么这样,我该怎么办?

        public class Test<T> : IDoStuff where T : SampleA
        {

            Action<T> action;

            void DoStuff<U>(U u) where U : SampleA
            {
                action(u);
            }

        }
最佳答案
假设SampleA代表动物,你就是这样做的

public class Bird :  SampleA { }

public class Dog :  SampleA { }

Test<Bird> b = new Test<Bird>();
b.DoStuff<Dog>();

野外动作现在知道如何对Bird进行操作,但不知道如何对你传递它的Dog,即使它们共享一个接口和公共基类.

您可以通过更改此行来完成此工作

Action<T> action;

Action<SampleA> action;

转载注明原文:c# – 当泛型类型约束相同时,为什么会出现“无效参数”错误? - 代码日志