いくつかのプロパティを持つインターフェイスを作成しました。
インターフェイスが存在しない場合、クラスオブジェクトのすべてのプロパティは
{ get; private set; }
ただし、これはインターフェイスを使用する場合は許可されないため、これを実現できますか?
インターフェイスでは、プロパティに対してgetter
のみを定義できます
interface IFoo
{
string Name { get; }
}
ただし、クラスでは、private setter
-
class Foo : IFoo
{
public string Name
{
get;
private set;
}
}
インターフェイスはパブリックAPIを定義します。パブリックAPIにゲッターのみが含まれている場合、インターフェイスでゲッターのみを定義します。
public interface IBar
{
int Foo { get; }
}
プライベートセッターは(他のプライベートメンバーのように)パブリックAPIの一部ではないため、インターフェイスで定義できません。ただし、インターフェイス実装に(プライベート)メンバーを自由に追加できます。実際には、セッターがパブリックとして実装されるかプライベートとして実装されるか、またはセッターが存在するかどうかは関係ありません。
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