比方说,我们有一个ASP.NET MVC视图这样的:动态的MVC视图具有相似但不相同的类作为示范
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>
<%: Html.EditorFor(model => model.ServiceDate) %>
<%: Html.ValidationMessageFor(model => model.ServiceDate, "*")%>
和我们有相似但不完全相同的模型类,例如Invoice
和Quote
,它们都包含ServiceDate
属性。这两个类不会从同一个基类继承,实际上它们目前没有基类。
如何让他们继承相同的基类,当这两个由EF生成?如果我能做到这一点,我可以替换
dynamic
并将基类指定为View的强类型。我当时的印象是,
dynamic
就是为此而设计的。但很明显,这是行不通的,因为那里是一个的显然是未来的LINQ到EF异常:CS1963:表达式树不能包含一个动态操作
虽然在VS 2010编辑器不说,表达式将在运行时解析,但不会,但会失败。
Downvoted是因为使用部分类进行扩展不允许在C#中更改基类 - 部分声明不能指定不同的基类。我在.NET 4和ASP.NET MVC 2中使用EFv4。 – mare 2010-09-22 11:55:30
是的。但是你可以用ServiceDate属性创建一个接口,并且在你的部分声明中实现这个接口。这样做,您可以将界面指定为View的强类型。对?还是我错了?我现在不在VS这里。 – goenning 2010-09-22 12:10:33
这确实有效.. – mare 2010-09-22 12:39:39