道歉是菜鸟问题。
我在将接口属性实现为私有时遇到麻烦。我不想将其公开给派生类。
也许我使用的接口/属性错误。请引导我。
我在派生类中将该属性设置为私有。 我也尝试在界面中使用字段。
示例1:在派生类中设置为私有。
interface IHeader
{
string title {get; set;}
}
class Head1 : IHeader
{
private string title {get; set;}
}
示例2:设置为字段。
interface IHeader
{
string title;
}
class Head1 : IHeader
{
private string title;
}
```
Error message 1: '<class>' cannot implement an interface member because it is not public.
Error message 2: Interface cannot contain fields.
(Error message 2 was obvious to me).
答案 0 :(得分:0)
如果将接口设置为内部并显式实现接口,则会将那些属性隐藏在程序集之外。
internal interface IHeader
{
string title { get; set; }
}
class Head1 : IHeader
{
string IHeader.title { get; set; }
}
根据您的要求,可能会有更好的选择,但尚不清楚。抽象类是一个选项,或者将Head1
封装在面向公众的服务类中是另一种选择。
在这种情况下,抽象类选项可能更合适。
abstract class HeaderAbs
{
protected string title { get; set; }
}
class Head1 : HeaderAbs
{
// You can access title from Head1 class but not from outside
}