首页 > 解决方案 > 将接口作为参数而不是特定类型传递

问题描述

假设我们有这个

    class A { }
    class B : A, IB { }
    interface IB { }
    class C
    {
        private readonly _ib;
        public C(IB ib) {_ib = ib;}
        public void SomeMethod()
        {
            SomeOtherMethod(ib) //which actually requires an object of type A.
        }
    }

SomeOtherMethod需要一个类型的参数A,但我试图用它来调用它IB,但它不起作用,它说:

无法从 IB 转换为 A

这是为什么?该怎么做才能克服这个?

标签: c#.net

解决方案


接口不如类具体。您不能传入接口以满足类参数。

如果定义了这样的转换,则可以从接口转换为类,但这是一种缩小转换,因此 C# 不会自动执行此操作(除非您将其定义为隐式转换)。


推荐阅读