我想有一個只讀出的界面,讀取裏面執行/寫性能
interface IFoo
{
string Foo { get; }
}
與像的實現:
abstract class Bar : IFoo
{
string IFoo.Foo { get; private set; }
}
我想的屬性爲gettable通過接口,但只能在具體實現中寫入。最乾淨的方法是什麼?我是否需要「手動」實現getter和setter?
我想有一個只讀出的界面,讀取裏面執行/寫性能
interface IFoo
{
string Foo { get; }
}
與像的實現:
abstract class Bar : IFoo
{
string IFoo.Foo { get; private set; }
}
我想的屬性爲gettable通過接口,但只能在具體實現中寫入。最乾淨的方法是什麼?我是否需要「手動」實現getter和setter?
interface IFoo
{
string Foo { get; }
}
abstract class Bar : IFoo
{
public string Foo { get; protected set; }
}
幾乎是你有,但protected
和班裏的屬性掉落IFoo.
。
我建議protected
假設你只希望它可以從INSIDE派生類訪問。相反,如果你希望它是完全公開(可在類的外部設置過),只要用:
public string Foo { get; set; }
只需使用protected set
,也拆除IFO
的屬性之前,使之隱。
interface IFoo
{
string Foo { get; }
}
abstract class Bar : IFoo
{
public string Foo { get; protected set; }
}
爲什麼顯式的實現接口?這將編譯,沒有問題的作品:
interface IFoo { string Foo { get; } }
abstract class Bar : IFoo { public string Foo { get; protected set; } }
否則,你可能對類保護/私有財產,並明確實現接口,但委託吸氣到類的getter。
要麼使實現隱而不顯
abstract class Bar : IFoo
{
public string Foo { get; protected set; }
}
或者添加支持字段
abstract class Bar : IFoo
{
protected string _foo;
string IFoo.Foo { get { return _foo; } }
}
'protected'是要走的路。 – Jay 2014-11-14 19:10:12
你能澄清嗎? '字符串PartitionKey {get;保護組; }'產生一個錯誤「可訪問性修飾符不能在接口的訪問器上使用」 – bfops 2014-11-14 19:13:28
您需要實現帶有支持字段的屬性 - 然後您將能夠從具體實現中訪問該字段(設置爲受保護時) 。我不認爲你可以通過自動屬性來實現。 – MarcinJuraszek 2014-11-14 19:14:24