2015-06-21 75 views

回答

1

在vb.net中沒有C#Dynamic的等價物,您可以將dynamic替換爲Object並確保您設置option strict off。 的dynamic關鍵字帶來Option Strict Off同等功能爲C#。

+0

問題是後期綁定選項不嚴格 –

1

基於MSDN的主要區別是:

如果後期綁定調用到實現 IDynamicMetaObjectProvider接口的對象做,Visual Basic中使用該接口綁定到 動態對象。如果後期綁定調用由 一個對象沒有實現IDynamicMetaObjectProvider 界面,但如果在調用IDynamicMetaObjectProvider接口 失敗,Visual Basic中使用後期綁定 能力的Visual Basic的結合對象運行。

因爲你提到:

問題是與後期綁定選項不嚴格

您可以通過使用後期綁定引用dynamic對象。在C#中,可以將後期綁定對象的類型指定爲dynamic。在Visual Basic中,您將後期綁定對象的類型指定爲Object。欲瞭解更多信息,請參閱dynamic (C# Reference)Early and Late Binding (Visual Basic)

您可以通過在System.Dynamic命名空間中的類創建自定義dynamic對象。例如,您可以創建一個ExpandoObject並在運行時指定該對象的成員。您也可以創建繼承DynamicObject類的自己的類型。然後,您可以覆蓋DynamicObject類的成員以提供運行時動態功能。

一個實例可以在MSDN找到。

更新: VB活頁夾不適用於中等信任類型爲dynamic的東西。嘗試將您的應用設置爲完全信任。此外Option Strict On不允許後期綁定在VB.Net中。如果你要使用強類型的輔助像Html.EditorFor,而你的觀點是不是強類型的一類,因此,你需要以指示@Page定義的模式類型:

<%@ Page 
    Language="VB" 
    MasterPageFile="~/Views/Shared/Site.Master" 
    Inherits="System.Web.Mvc.ViewPage(Of YourApplication.YourModelClass)" %> 

然後你就可以放心地使用這些輔助方法。

+0

感謝您的回答。我想要做的是在我的View(vbhtml)文件中使用這樣的語句:'@ Html.TextBoxFor(Function(x)x.Id)''Id'在運行時綁定!如果我使用'ExpandoObject',它會導致設計時錯誤,告訴'Id'不是'ExpandoObject'的成員,這也發生在'DynamicObject'上。我所要做的就是基於我的模型動態創建我的視圖,該模型本身是動態的,並由從數據庫檢索的信息創建。它似乎是我應該尋找另一種方式mohandes;) –

+0

@HamedZakeryMiab爲什麼你試圖使用強類型助手像'Html.EditorFor',而你的看法沒有強類型的類?請參閱我的*更新*。 –

+0

呃,回答你的問題是非常困難的!但簡而言之,因爲我的MVC應用程序不是一個獨立的應用程序,而且在實際使用中,它可以作爲OWIN中間件應用於另一個應用程序,而這些應用程序的模型在那裏是強類型的! –

1

VB相當於@model動態在C#剃刀@ModelType

相關問題