EditorFor/DisplayFor テンプレート (または類似のもの) を使用して、実行時に MVC スタイル ビューを構築したい状況があります。
理想的には、私たちのアプリケーションでは、UI に必要なフィールドをユーザーが選択できるようにする (したがって、必要に応じて任意のフィールドを追加/削除できます)。この目的のために、実行時にビューモデル クラスを作成し、さまざまなdataannotation は、ユーザーが選択したもの (つまり、文字列の長さ、必須など) に従ってそれらに属性を付けます。
私がサポートできるようにする必要があることの 1 つは、他のユーザーに影響を与えたり、完全な iisreset を実行したりすることなく、実行時に生成されたクラスを変更することです。
これを行うために、私は少し調査を行ってきましたが、CodeDom、RunSharp / Relfection.Emit、Roslyn の 3 つの異なるアプローチがあるようです。
私が言えることから、reflection.Emit/Runsharp を使用すると、実行時にクラスを作成し、それらに属性とプロパティを追加できます。また、必要に応じて悪影響を与えることなく変更することもできます。
Roslyn がこれを許可するかどうかはわかりません。プロパティまたは属性を含むクラスを作成する簡単な例を追跡できませんでした。また、Roslyn の出力が不変であるという言及をいくつか見たので、後で悪影響を与えずに変更できるようにするためにどうすればよいかわかりません。
一般的に、私が見た限りでは、ほとんどの人は CodeDom を推奨していません。
これらの方向のどれが私にとって実行可能であるかについて、誰かが私に考えを与えることができますか?