我有一种情况,我想在运行时使用EditorFor/DisplayFor模板(或类似的东西)构建MVC样式视图。在运行时编写和更改代码
理想情况下,我们的应用程序可以让用户在他们的UI中选择他们想要的字段(所以他们可以添加/删除任何他们认为合适的),为此我认为在运行时创建viewmodel classess并根据用户选择的内容(即stringlength,required等)为其添加各种dataannotation属性。
有一件事我需要能够支持在运行时不会影响其他用户或有做了充分的IISRESET正在改变已经生成的类。
去这个问题我已经做了一些研究,它看起来可能有3点不同的方法,CodeDom中,RunSharp/Relfection.Emit,罗斯林。
从我可以告诉Reflection.Emit的/ Runsharp,让我创建的类和在运行时添加attibutes和属性,对他们也可能对其进行修改,当我需要无不良影响。
我不确定Roslyn是否会允许这样做,我还没有能够追踪任何创建一个具有属性或属性的类的简单示例,我已经看到一些提到Roslyn的输出是不可变的,所以我不知道这是如何让我在以后修改它没有不利影响。
一般从什么我见过的大多数人不推荐的CodeDOM所以我不能完全肯定我是否应该去打扰这条路线。
任何人都可以给我一个这些方向中的哪一个可能适合我的想法吗?
你确定你确实需要在运行时创建一个类型吗?不会像'Dictionary'足够吗? –
svick