同じ質問as this oneに明示的に実装される読み取り専用のインターフェイスプロパティに値を割り当てますが、C#7.0ではなく6.0のために:コンストラクタ
に値を代入する方法はあります読み取り専用明示的に実装されます( getterのみ)コンストラクタのインターフェイスプロパティ?それとも、同じ答え、つまりバッキングフィールドの回避策を使用していますか?例えば
:
interface IPerson
{
string Name { get; }
}
class MyPerson : IPerson
{
string IPerson.Name { get; }
internal MyPerson(string withName)
{
// doesn't work; Property or indexer 'IPerson.Name'
// cannot be assigned to --it is read only
((IPerson)this).Name = withName;
}
}
対処法:あなたは、コンストラクタに拡張されている表現ボディのメンバーに言及していた場合
class MyPerson : IPerson
{
string _name;
string IPerson.Name { get { return _name; } }
internal MyPerson(string withName)
{
_name = withName;
}
}
私はあなたが単に文字列IPerson.Name {get;プライベートセット; } '編集:テストの後、私は間違っていることが分かります。 – itsme86
@ itsme86残念ながら、明示的なインターフェース実装では、 'IPerson.Name'を使うことはできません。もし彼が 'IPerson 'への明示的な参照を使わなかったなら、名前が重複しているために明示的な呼び出しが必要な時があります。 –