比方說,我們有一個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