4

重複の可能性:
C# インターフェイスの非パブリック メンバー

私が持っているとしましょう

internal interface IInterface
{
    int MyProperty { get; set; }
}

public class MyClass : IInterface
{
    internal int MyProperty
    {
        get
        {
            throw new NotImplementedException();
        }
        set
        {
            throw new NotImplementedException();
        }
    }
}

私はこれを得る:

インターフェイス メンバーを実装しません。パブリックではないため、インターフェイス メンバーを実装できません。

修正方法はわかっていますが、なぜ C# でインターフェイス メンバーをプライベートにできないのか疑問に思っています。

ライブラリを書いているときなど、何度もクラスをパターンに合わせたいと思っていましたが、メンバーを公開する必要はありませんでした。そして何よりも、インターフェイス自体は公開されていません:X

注: プライベート インターフェイス メンバーを実装する方法を尋ねているわけではありませんが、この決定の背後にある設計ロジックは知っています。適切な複製が見つかりませんでした。

更新:元のスレッドよりも、別のスレッドの回答からのこのコードサンプルは、ほとんどの説明の回答よりもよく説明しています。またはさらに良いことに、@JonSkeetからこれ

4

2 に答える 2

1

インターフェースはコントラクトを定義するために使用されます。フィールド/メソッドを非公開にすることで、インターフェースを使用しても意味がありません。クライアントは契約の使用方法をどのように知っていますか? 抽象クラスが本当に必要でない限り。

于 2012-09-24T10:45:38.763 に答える
1

インターフェイスのポイントは、他のオブジェクトがオブジェクトと通信するために使用できるコントラクトを提供することです。もはや役に立たないので、メンバーを非公開にする意味はありません

于 2012-09-24T10:46:27.827 に答える