[英]How to implement interface properties without exposing it to outside of the derived class
對此道歉是菜鳥問題。
我在將接口屬性實現為私有時遇到了麻煩。 我不想將它暴露給派生類之外。
也許我使用的接口/屬性有誤。 請指導我。
我在派生類中將該屬性設置為私有。 我也嘗試在界面中使用字段。
示例 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).
如果您將接口設置為內部接口並顯式實現接口,它將在程序集之外隱藏這些屬性。
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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.