方法的可见性的责任被转移到实现该接口的类。
public interface IMyInterface
{
bool GetMyInfo(string request);
}
在C#中设置访问修饰符公共,私人或方法GetMyInfo(前保护)生成以下错误:修改“私”是不适用于这个项目。
有没有你不能定义一个方法或接口访问修饰符理由吗?
(问题已经问过法语这里 )
方法的可见性的责任被转移到实现该接口的类。
public interface IMyInterface
{
bool GetMyInfo(string request);
}
在C#中设置访问修饰符公共,私人或方法GetMyInfo(前保护)生成以下错误:修改“私”是不适用于这个项目。
有没有你不能定义一个方法或接口访问修饰符理由吗?
(问题已经问过法语这里 )
该接口定义了一个对象,并调用它的成员的客户端之间的契约。 私有方法不能被任何其他对象进行访问,因此没有意义,将其添加到接口。 接口的所有成员都被视为公共出于这个原因。
实际上,你可以使实现类的方法私有的,如果你让一个明确的接口实现:
public interface IMyInterface
{
bool GetMyInfo(string request);
}
public class MyClass : IMyInterface
{
public void SomePublicMethod() { }
bool IMyInterface.GetMyInfo(string request)
{
// implementation goes here
}
}
这种方法意味着GetMyInfo
不会的公共接口的一部分MyClass
。 它只能通过铸造访问MyClass
实例IMyInterface
:
MyClass instance = new MyClass();
// this does not compile
bool result = instance.GetMyInfo("some request");
// this works well on the other hand
bool result = ((IMyInterface)instance).GetMyInfo("some request");
因此,在界面的背景下,它的所有成员都将被公开。 他们可以从一个实现类的公有接口被隐藏,但总是做一个类型转换的实例,并访问成员,这样的可能性。
在OO方面 - 封装是所有关于数据隐藏。 这意味着无论在里面一类是最多的类实现去。 这意味着这将是无用的合同执行私有成员。
然而,一个使用接口的原因是因为要确保一类附着于特定的合同,并以一致的方式公开了几个公共成员。
所有的接口的方法必须具有相同的访问级别 - 这样,来电者可以使用他们。 然而接口也可以是内部的(或嵌套的接口私有的)。
如果你需要不同的访问级别使用不同的接口。
在将接口私人定义: