【发布时间】:2018-02-28 12:22:10
【问题描述】:
知道 C# 支持接口继承,我想创建一个接口“B”,它继承自基本接口“A”但也隐藏了一些接口“A”成员,就像一个类使用显式接口实现来隐藏一个接口成员,除非类实例被强制转换为实现的接口:
我的例子:
首先我用一些成员和方法创建一个接口IDbObject
public interface IDbObject
{
IDbObject ParentObject
{
get;
}
.
.
.
}
然后我创建了第二个接口IDbConstraint,它继承了第一个接口,但由于继承是专业化的,我更了解ParentObject 成员,我想在子接口中调用ParentTable。
public interface IDbConstraint : IDbObject
{
// Hide IDbObject.ParentObject
IDbTable ParentTable
{
get;
}
.
.
.
}
【问题讨论】:
-
我不太确定你在问什么。为什么不直接实现派生接口 IDbConstraint 而不是 IDbObject?或者根据您实际尝试解决的问题,泛型可能是答案。
-
“继承”在谈论接口时总是错误的思维模式。您不会从界面继承蹲下,您得到的只是编写更多代码的需求。 IDbConstraint 有两个成员,没有什么被“遮蔽”。在实现它时它会让你头疼,因为它们的名字是模棱两可的,需要明确的实现来处理它。如果你有选择,你可以选择,然后给他们不同的名字。
-
从头开始声明一个接口 IDbConstraint 具有一半的属性和已经在另一个接口 IDbObject 中声明的方法只是浪费时间和存储空间。 Inheretence 可以解决这类问题,为什么不使用呢?