簡體   English   中英

如何實現接口屬性而不將其暴露給派生類之外

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM