c# - 不在接口(interface)中的类方法

标签 c# methods interface

我有一个简单的 C# 问题(我相信)。我是该语言的初学者,遇到了有关实现它们的接口(interface)和类的问题。问题是

我有接口(interface) iA

interface iA
{
  bool method1
  bool method2
  bool method3
}

和实现该接口(interface)的 3 个类:类 BCD

class B : iA
{
  public bool method1
  public bool method2
  public bool method3
}

如果类 B 有另一个不在接口(interface)中的方法,假设 method4() 并且我有以下内容:

iA element = new B();

然后我会使用:

element.method4();

我会收到一条错误消息,指出我没有采用 iA 类型的第一个参数的 method4()

问题是:我能否拥有一个接口(interface)类型的对象并用一个类实例化,然后让该对象调用类中的一个方法,一个不在接口(interface)中的方法?

我想出的一个解决方案是在接口(interface)和派生类之间使用一个抽象类,但 IMO 会将接口(interface)置于范围之外。在我的设计中,我只想使用接口(interface)和派生类。

最佳答案

是的,这是可能的。您只需要像这样将接口(interface)类型转换为类类型:

iA element = new B();
((B)element).method4();

根据 wudzik 的建议,您应该检查 elemnt 的类型是否正确:

if(element is B)
{
    ((B)element).method4();
}

关于c# - 不在接口(interface)中的类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17918293/

相关文章:

c# - Sqlite - 连接数据库失败

c# - 从 Java 迁移到 C#

c# - 如何使用 ASP.NET 技术检查请求是否来自本地主机

c# - Xamarin C# 将 View 宽度设置为屏幕 Android 的百分比

oop - 错误的方法名称及其对代码结构的说明

javascript - 防止覆盖提供的内部函数的方法

go - golang中的隐式接口(interface)转换

java - 获取字符串接受 string[] 作为参数?

python - 如何从python中的其他方法调用__private静态方法

c++ - 面试题接口(interface)实现