簡體   English   中英

如何使用公共屬性而不是私有集合方法實現多個接口?

[英]How do I implement multiple interfaces with public properties but private set methods?

我有兩個界面:

public interface IFooFile
{
    string Name { get; }
}

public interface IFooProduct
{
    string Name { get; }
}

我想用私有集實現這兩個:

public class AFooThing : IFooFile, IFooProduct
{
    public string IFooFile.Name { get; private set; }
    public string IFooProduct.Name { get; private set; }
}

但是訪問修飾符正在創建錯誤:

“ AFooThing.IFooFile.Name.set”的訪問者必須比屬性或索引器“ AFooThing.IFooFile.Name”更具限制性。

如果我實現這樣的類,則不會出現訪問修飾符錯誤,但沒有第二個接口:

public class AFooThing : IFooFile
{
    public string Name { get; private set; }
}

我無法弄清楚如何用添加的“私有集”實現兩個接口而不會引起問題。 處理此問題的正確方法是什么?

您不能將訪問修飾符用於顯式接口,它是public 您也不能添加set屬性,因為它在interface中不存在。 您可以做的是通過使用備用字段來實現您的目標,例如

public class AFooThing : IFooFile, IFooProduct
{
    private string _fooFileName;
    private string _fooProductName;

    string IFooFile.Name => _fooFileName;
    string IFooProduct.Name => _fooProductName;

    public AFooThing()
    {
        _fooFileName = "FooFileName";
        _fooProductName = "FooProductName";
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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