假設我有一個Excel.PivotField,並且需要在我的對象上設置HiddenItemsList。NewLateBinding.LateSet反射調用
用VB.NET和Option Strict Off
& Option Explicit Off
這將導致:
Dim field as Excel.PivotField = MyFunctionCall()
field.HiddenItemsList = GetHiddenItems()
雖然這一點也適用此安全設置,它顯然不,當你設置Option Strict On
和Option Explicit On
工作。
IDE無法解析我的PivotField上的HiddenItemsList屬性(第一個問題)。
但是,當使用後期綁定,它完美的作品。
現在下一步是啓用Option Strict和Explicit(我們將來會轉換爲C#)。
所以我看的代碼是如何編譯:
NewLateBinding.LateSet(field , Nothing, "HiddenItemsList", New Object() { GetHiddenItems() }, Nothing, Nothing)
容易吧?
但是這段代碼依賴於Microsoft.VisualBasic命名空間。當然,我們不希望這樣。
所以,我試圖將其轉換爲一個普通的反射調用:
GetType(Excel.PivotField).GetProperty("HiddenItemsList").SetValue(field , GetHiddenItems() , Reflection.BindingFlags.SetProperty, Nothing, Nothing, Nothing)
不幸的是第一部分(GetType(Excel.PivotField).GetProperty("HiddenItemsList")
)已經返回Nothing
,所以我卡住了。
有幫助嗎? ;-)