2016-06-27 15 views
0

これは何も見つかりませんので、プログラムが実行される前に書かれた現在の記述を取得する方法を見つけることができますが、変更する方法は見つけられません。私は(ちょうど例を持っているので、もしプログラムがすでに開始され、列挙型の)記述):プログラムの実行中にenumの説明を変更する

public enum MyColors { 
    [Description("This is green, like a cactus")] 
    Green, 
    [Description("This is red, like blood")] 
    Red, 
    [Description("This is blue, you know like water")] 
    Blue, 
    [Description("This is black, like the eyes of an alien")] 
    Black 
} 
アプリがすでに開始されている間、私は(プログラムの実行中に説明を変更するにはどうすればよい

)またはを教えて可能でない場合は「できない」、お時間をありがとう。

+0

バインドが必要な場合は観測可能な辞書を追加して、列挙型の値をキーに、説明を値として使用して、それを代わりに使用できます。ローカリゼーション用の場合は、属性を使用してキーストリングを関連付けるだけで、現在のローカリゼーションコンテキストでその文字列を検索することができます。 –

+0

これは、私がやっていたものです。 –

答えて

2

属性値が静的であり、コンパイルされたアセンブリに焼き付けられているため、Description属性の値を変更することはできません。

0

説明は属性で定義されています。パラメータ(文字列)は中間言語ILにコンパイルされるため、アセンブリの一部を形成します。結果として、実行時に説明を変更することはできません。

実行時に変更する必要がある場合は、列挙値と説明をリンクする方法を変更する必要があります。 1つの方法は、リソースファイルに変更することです。

関連する問題