名前空間グローバル内に次のクラスを作成しました
namespace Global
{
public static class Status
{
public static readonly char Active;
public static readonly char Suspended;
public static readonly char Terminiated;
public static readonly char Deleted;
private static readonly Dictionary<char, string> statusCollection;
public static Dictionary<char, string> StatusCollection
{
get
{
return statusCollection;
}
}
static Status()
{
statusCollection = new Dictionary<char, string>();
statusCollection.Add('A', "Active");
statusCollection.Add('S', "Suspended");
statusCollection.Add('T', "Terminated");
statusCollection.Add('D', "Deleted");
Active = 'A';
Suspended = 'S';
Terminiated = 'T';
Deleted = 'D';
}
}
public class a
{
public void add()
{
//How to make this collection readonly
Status.StatusCollection.Add('N', "asd");
Status.Active = 'M'; //Throws a compile time exception, changes not allowed
}
}
}
奇妙な動作即時ウィンドウで更新しようとしたときStatus.Active
、値が変更されないことを期待していましたが、変更が許可されました。readonly
リフレクションまたはランタイムを介して変数の値を変更できるということですか?