接口继承限制

时间:2018-02-28 12:22:11

标签: c# oop interface

我不确定这是否可行!

我想在子界面中重命名基本接口成员。

已知C#支持接口无效,所以为什么不利用它。

从头开始声明一个接口,其中一半属性和已在另一个接口中声明的方法只是浪费时间和存储空间。

坚持可以解决这类问题所以为什么不使用它呢!

首先,我创建一个带有一些成员和方法的接口IDbObject

public interface IDbObject
{
    IDbObject ParentObject
    {
        get;
    }
    .
    .
    .
}

然后我创建了继承第一个接口的第二个接口IDbConstraint,但由于继承是特化,我知道更多关于我想在子接口中调用ParentObject的{​​{1}}成员

ParentTable

我知道的最好的解决方案是等到实现时间,然后使用显式接口实现来隐藏ParentObject成员,除非实例被转换为IDObject:

public interface IDbConstraint : IDbObject
{
    IDbTable ParentTable //should replace the ParentObject member
    {
        get;
    }
    .
    .
    .
}

还有其他替代方案吗?

2 个答案:

答案 0 :(得分:0)

我不知道细节,因此我说错了。 但我认为这可能是使用抽象类而不是接口的解决方案。

public interface IDbObject
{
    IDbObject ParentObject
    {
        get;
    }
}
public abstract class IDbConstraint : IDbObject
{
    public IDbObject ParentTable 
    {
        get;
    }

    //Hidden becouse not public
    IDbObject IDbObject.ParentObject => throw new NotImplementedException();
}

答案 1 :(得分:0)

我所知道的最好的解决方案是等到实现时间,然后使用显式接口实现来隐藏ParentObject成员,除非实例被强制转换为IDObject:

public class DbConstraint : IDbDbConstraint
{
    IDbObject IDbObject.ParentObject
    {
        get;
    }

    IDbTable ParentTable
    {
        get;
    }
    .
    .
    .
}