我有一个非常简单的问题,但找不到答案。 在 Razor View 中有一个接口(interface)类型的模型。该接口(interface)有多个实现它的子类。 问题是:如何将模型转换为其实际类型? 我必须有实际类型的变量,但不知道如何从反射中获取它 即:
@model IInterface
@{
var actualType1 = Model as Model.GetType(); // doesn't work :(
var actualType2 = (Model.GetType()) Model; // doesn't work :(
}
正如您所想象的那样,我对 Model as ActualType
或 (ActualType) Model
不感兴趣,因为我不知道提前会出现什么实际类型。这是一个关于技术而不是架构的问题。
提前致谢!
最佳答案
你真的走错路了。你在这里无法真正做你想做的事,因为你没有真正思考清楚。像这样的声明:
var actualType1 = Model as Model.GetType();
不起作用,因为 var 不是动态类型,它是在编译时而不是运行时键入的静态类型。因此,即使您能以某种方式设法让它工作,它也只能适用于一种类型(直到再次重新编译)。
除此之外,接口(interface)并不是一个好的选择,因为接口(interface)属性与实现属性是分开的。因此,无论您的类具有什么属性,您都不会通过该类的接口(interface)获取它们。
关于asp.net-mvc - asp.net mvc3 razor 语法通过反射将模型转换为其子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11832044/