繁体   English   中英

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

[英]internal interface implementation in a public interface

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

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

    ICommand Command { get; set; }
}

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

您可以将其abstract class ..允许在其上使用辅助功能修饰符:

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

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

    internal ICommand Command { get; set; }
}

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

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

但是,您可以做的是拥有一个派生的接口,它比它的父对象更具限制性,该派生的接口可能包含内部成员。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM