クラスのプロパティを public から見えるようにできますが、変更できるのは特定のクラスだけですか?
例えば、
// this is the property holder
public class Child
{
public bool IsBeaten { get; set;}
}
// this is the modifier which can set the property of Child instance
public class Father
{
public void BeatChild(Child c)
{
c.IsBeaten = true; // should be no exception
}
}
// this is the observer which can get the property but cannot set.
public class Cat
{
// I want this method always return false.
public bool TryBeatChild(Child c)
{
try
{
c.IsBeaten = true;
return true;
}
catch (Exception)
{
return false;
}
}
// shoud be ok
public void WatchChild(Child c)
{
if( c.IsBeaten )
{
this.Laugh();
}
}
private void Laugh(){}
}
Childはデータ クラス、
Parentはデータを変更できるクラス、
Catはデータの読み取りのみが可能なクラスです。
C# で Property を使用してそのようなアクセス制御を実装する方法はありますか?