我的ViewModel中有一个字符串属性,它包含十个可能类之一的序列化表示,每个类都非常不同,所以没有基类。
public string Configuration { get; set; }
public string ConfigurationType { get; set;}
理想情况下,我想为每个可以反序列化到属性中的类创建一个不同的编辑器模板,它们只是
<%= Html.EditorFor(l => l.Configuration)%>
我可以以某种方式通知mvc,需要将Configuration反序列化为ConfigurationType的对象,以便它使用正确的模板,然后再次反序列化为字符串。
我很欣赏我在这里详细介绍了细节,但我希望尽可能保持抽象的东西,这样我就不会把水弄得太多。
答案 0 :(得分:0)
我认为您应该考虑采用不同方式处理手头的问题。我不知道您的问题的详细信息,但根据您提供的信息,我认为以下可能是一个可行的解决方案:
ConfigurationBase
类,其中包含10个类的公共属性。Configuration
属性属于String
类型,而应该是通用的,即:T
。因此,您的视图模型也应该是泛型类型,其中type参数应该约束为ConfigurationBase
和new()
(因为它应该被序列化/反序列化)。 ConfigurationType
属性,因此请将其删除。ConfigurationBase
的每个子类创建一个编辑器。String
。检查以下代码:
public class MyViewModel<T> where T : ConfigurationBase, new()
{
public T Configuration {get; set; }
public String SerializeConfiguration()
{
//return the serialized this.Configuration
}
}