런타임에 EditorFor/DisplayFor 템플릿 (또는 이와 유사한)을 사용하여 MVC 스타일보기를 빌드하고자하는 경우가 있습니다.런타임에 코드 작성 및 변경
이상적으로 우리의 응용 프로그램은 UI에서 원하는 필드를 사용자가 선택할 수있게하여 (따라서 사용자가 적절하게 추가/제거 할 수 있음),이 시점에서 런타임시 뷰 모델을 작성하는 것이 편리 할 것이라고 생각합니다. 사용자가 선택한 것 (예 : 문자열 길이, 필수 항목 등)에 따라 다양한 데이터 주석 속성을 추가하십시오.
내가 지원할 수있는 한 가지는 런타임에 생성 된 클래스를 다른 사용자에게 영향을주지 않거나 전체 iisreset을 수행하지 않고 변경하는 것입니다.
나는이 연구에 대해 약간의 연구를 해왔으며 CodeDom, RunSharp/Relfection.Emit, Roslyn의 3 가지 접근법이있는 것으로 보입니다.
reflection.Emit/Runsharp를 통해 내가 클래스를 만들고 런타임에 attibutes와 속성을 추가 할 수있게 해 주었고 부작용없이 필요할 때 수정할 수도있었습니다.
Roslyn이 이것을 허용한다면, 나는 속성이나 속성을 가진 클래스를 만드는 간단한 예제를 추적 할 수 없었고, Roslyn의 출력은 다음과 같습니다. 불변이므로 불리한 영향을 미치지 않고 나중에 수정하도록 허용하는 방법이 확실하지 않습니다.
일반적으로 대부분의 사람들은 CodeDom을 권장하지 않으므로이 경로를 거쳐야하는지 완전히 확신 할 수 없습니다.
누구에게 내게이 지침 중 어떤 것이 나에게 유용 할 수 있는지 아이디어를 제공 할 수 있습니까?
실제로 런타임에 유형을 만들어야합니까? 'Dictionary'와 같은 것이 충분하지 않습니까? –
svick