internal interface ICommand
{
// some methods...
}
public interface IProject
{
// some other methods...
ICommand Command { get; set; }
}
我认为很清楚。由于可访问性,编译器不允许这样做。有什么办法吗?或者我应该改变结构吗?
答案 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; }
}