我有一个简单的 C# 问题(我相信)。我是该语言的初学者,遇到了有关实现它们的接口(interface)和类的问题。问题是
我有接口(interface) iA
interface iA
{
bool method1
bool method2
bool method3
}
和实现该接口(interface)的 3 个类:类 B
、C
和 D
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/