C# 关于接口的继承

KevinNeo 2011-10-01 12:44:48
接口 继承 接口 以后。在另一个类实现子接口。调用这个类的时候,找不到 子接口 里新增的方法(类里已经实现了)

我做在一个项目。三层开发的。因为不好贴上代码,所以只能用文字形容一下了。看的有点晕的话请见谅。。。
我在业务逻辑层有两个文件夹 BLL 和 IBLL
IBLL里有一个类 IBasic 里面有IBasic(父类)类型的ibasic对象 可以根据构造函数传进来的参数 实例化不同类(简单工厂)。同时有 增 删 改 查 4个方法
接着我在
BLL文件夹里写了一个ImpleRoomType类。继承了 IBasic 类。多增加了一个 查询方法



在数据访问层有两个文件夹 DAL 和 IDAL
IDAL里有一个接口 Ibasic 里面有 增 删 改 查 4个方法(对应IBLL文件夹下的 IBasic)
还有一个接口 IRoomType 继承了 Ibasic 接口 里面有一个 查询方法(对应BLL文件夹下的 ImpleRoomType)

DAL 文件夹里有一个 BaseRoomType 类,实现了 IRoomType 接口(IDAL里的 Ibasic 以及 IRoomType 接口方法都实现了)



问题来了。现在 ImpleRoomType 类 新增的查询方法体里 使用父类里的 ibasic对象 想调用 BaseRoomType 里的新增的查询方法 可是无法访问到。这是为什么呢? 我把 IRoomType 接口的查询方法 挪到 Ibasic 父接口里,又可以访问了。
难道 C# 里 接口不能继承接口吗?可是我实现 IRoomType 接口5个方法没有报错啊

不知道各位大侠看晕了没有。。。我写的都有点晕了。。。


...全文
129 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
机器人 2011-10-01
  • 打赏
  • 举报
回复
很明显,类都有自己的作用域。虽然你实现了 IRoomType,IBasic。但你用IBasic怎么能跨域调用到实现IRoomType的方法呢
threenewbee 2011-10-01
  • 打赏
  • 举报
回复
不想解释,自己看代码。

还有,你的Java学得很糟糕,就不用回忆了。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
C c = new C();
c.foo();
c.bar();
c.aMethod();
I1 i1 = c;
i1.foo();
// i1.bar(); 错误
(i1 as I2).bar();
//(i1 as I2).aMethod(); 错误
(i1 as C).aMethod();
i1.GetType().GetMethods().Where(x => x.Name == "aMethod").First().Invoke(i1, new object[] { });
}
}

interface I1
{
void foo();
}
interface I2 : I1
{
void bar();
}
class C : I2
{
public void bar()
{
Console.WriteLine("bar");
}

public void foo()
{
Console.WriteLine("foo");
}

public void aMethod()
{
Console.WriteLine("aMethod");
}
}
}
KevinNeo 2011-10-01
  • 打赏
  • 举报
回复
我是在校学生。这个项目也是个小项目。代码不好贴出来,是因为不知道怎么贴好。从我语言表达就可以看出来至少是5个类。以前用Java写过这种结构的开发 现在转向。NET 想把学到的东西都回忆一下。结果就出这种错
  • 打赏
  • 举报
回复
无代码无真相

你们那是国营单位的研究所吗?你写的这种代码也是什么保密代码?

不要纠结什么DAL。看你的软件设计知识,纠结DAL概念要比那些根本不知道什么DAL概念的人出的问题可能更多

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧