公共接口中的内部接口实现

时间:2014-05-20 05:20:56

标签: c# interface

internal interface ICommand
{
    // some methods...
}

public interface IProject
{
    // some other methods...

    ICommand Command { get; set; }
}

我认为很清楚。由于可访问性,编译器不允许这样做。有什么办法吗?或者我应该改变结构吗?

2 个答案:

答案 0 :(得分:0)

您可以将其设为abstract class ..这将允许其上的辅助功能修饰符:

internal interface ICommand
{
    // some methods...
}

public abstract class Project
{
    // some other methods...

    internal ICommand Command { get; set; }
}

这允许您在控制可访问性的某些部分时仍然执行合同。但是,这可能适合您,也可能不适合您,因为它会破坏您的继承能力。

答案 1 :(得分:0)

接口的所有成员必须具有与接口本身相同的可访问性或更少的限制。因此,您不能在公共接口中使用内部类型。

但是,您可以做的是使用派生的接口,该接口比其父接口更具限制性,派生接口可以包含内部成员。

internal interface ICommand
{
    // some methods...
}

public interface IProject
{
    // some other methods...
}

internal interface IProjectWithCommands : IProject
{
    ICommand Command { get; set; }
}