【发布时间】:2013-07-28 21:41:42
【问题描述】:
我有一个简单的 c# 问题(所以我相信)。我是该语言的初学者,我遇到了有关实现它们的接口和类的问题。问题是
我有接口iA
interface iA
{
bool method1
bool method2
bool method3
}
以及实现该接口的 3 个类:B、C 和 D 类
class B : iA
{
public bool method1
public bool method2
public bool method3
}
如果 B 类有另一个不在接口中的方法,比如说method4(),我有以下内容:
iA element = new B();
然后我会使用:
element.method4();
我会收到一条错误消息,指出我没有采用iA 类型的第一个参数的method4()。
问题是:我能否拥有一个接口类型的对象并用一个类进行实例化,并让该对象从该类调用一个方法,一个不在接口中的方法?
我想出的一个解决方案是在接口和派生类之间使用一个抽象类,但是 IMO 会使接口超出范围。在我的设计中,我只想使用接口和派生类。
【问题讨论】:
-
if(element is typeof(B)) ((B)element).method4();这应该会有所帮助 -
一个新用户提出了一个清晰且格式正确的问题。这是罕见的,恭喜并欢迎。 :)
-
好问题。 +1 如果您提供真实场景,我们可以建议最佳设计方法。