c# - 将接口作为参数而不是特定类型传递
问题描述
假设我们有这个
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# 不会自动执行此操作(除非您将其定义为隐式转换)。
推荐阅读
- wpf - 对 Google API 进行身份验证后访问 Google 相册不起作用(错误 403 已禁止)
- sql - 在 postgres 中像 excel 一样排序
- realm - 连接 Realm Studio 时服务器证书不可信
- apache-spark - Spark thrift 服务器仅使用 2 个内核
- laravel - Laravel 检查电子邮件和提供商是否存在
- simulation - 多驱动网络:合成正常,模拟失败
- spring - spring jpa 加入两个实体
- c# - 使用 OpenFileDialog 从 CSV 文件中读取特定列
- sql - 更新查询中的聚合函数与 sql server 中的 case 语句
- node.js - 使用 nodejs 从 ibm 云函数调用 http GET 请求