いくつかのプロパティを持つインターフェイスを作成しました。
インターフェイスが存在しない場合、クラス オブジェクトのすべてのプロパティが設定されます。
{ get; private set; }
ただし、インターフェイスを使用する場合、これは許可されていないため、これを達成できますか?
いくつかのプロパティを持つインターフェイスを作成しました。
インターフェイスが存在しない場合、クラス オブジェクトのすべてのプロパティが設定されます。
{ get; private set; }
ただし、インターフェイスを使用する場合、これは許可されていないため、これを達成できますか?
getter
インターフェイスでは、プロパティに対してのみ定義できます
interface IFoo
{
string Name { get; }
}
ただし、クラスでは、それを拡張してprivate setter
-
class Foo : IFoo
{
public string Name
{
get;
private set;
}
}
インターフェイスはパブリック API を定義します。パブリック API に getter のみが含まれている場合は、インターフェイスで getter のみを定義します。
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
Setter はインターフェイスの一部ではないため、インターフェイス経由で呼び出すことはできません。
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