いくつかのプロパティを持つインターフェースを作成しました。 インターフェイスの使用時にプライベートセッターを実装するにはどうすればよいですか?
インタフェースはクラスオブジェクトのすべてのプロパティを存在しなかった場合
は、インタフェースを使用している場合、これは許可されていない しかし{get; private set; }
に設定されますので、これを達成することができそうだとすればどのように?インターフェイスで
いくつかのプロパティを持つインターフェースを作成しました。 インターフェイスの使用時にプライベートセッターを実装するにはどうすればよいですか?
インタフェースはクラスオブジェクトのすべてのプロパティを存在しなかった場合
は、インタフェースを使用している場合、これは許可されていない しかし{get; private set; }
に設定されますので、これを達成することができそうだとすればどのように?インターフェイスで
あなたはしかし、あなたのクラスであなたがprivate setter
持って、それを拡張することができる唯一のgetter
あなたの財産のための
interface IFoo
{
string Name { get; }
}
を定義することができます -
class Foo : IFoo
{
public string Name
{
get;
private set;
}
}
インタフェースは、パブリックAPIを定義します。 、
public interface IBar
{
int Foo { get; }
}
プライベートセッターは、(他のプライベートメンバなど)パブリックAPIの一部ではないので、あなたは、インターフェイスで定義することができません:パブリックAPIのみゲッターが含まれている場合は、インターフェイスにのみゲッターを定義します。しかし、あなたは任意の(私的な)メンバーをインターフェースの実装に自由に追加することができます。実際にはセッターはパブリックまたはプライベートとして実装されるかどうかは問題ではない、またはsetterがあるだろうとします
public int Foo { get; set; } // public
public int Foo { get; private set; } // private
public int Foo
{
get { return _foo; } // no setter
}
public void Poop(); // this member also not part of interface
セッターは、インターフェイスの一部ではないので、それはあなたのインターフェースを介して呼び出すことはできません。
IBar bar = new Bar();
bar.Foo = 42; // will not work thus setter is not defined in interface
bar.Poop(); // will not work thus Poop is not defined in interface
ありがとう、あなたは私を救った –
何らかの理由で私はこれを決して覚えていない。私は私のキャリアの中でGoogleを介してこのページに約13回上陸したと思う。 LOL – Dan
@ダンあなたは一人ではありません:D – Vahid