2
好吧,某些遺傳代碼:我有權限的整個負載的結構:訪問VB.Net結構元素
public structure Perms
dim writeStaff as Boolean
dim readStaff as Boolean
dim writeSupervisor as Boolean
dim readSuperVisor as Boolean
' ... and many more
End Structure
而且我希望有一個功能CANDO,我像這樣創建:
public function canDo(p as Perms, whichOne as String) as boolean
Dim b as System.Reflection.FieldInfo
b = p.GetType().GetField(whichOne)
return b
end function
我打電話CANDO與預填充結構和「writeSupervisor」參數
在調試,b顯示爲{布爾writeSupervisor},但是當我試圖返回b爲布爾,我得到錯誤:值典型值e'System.Reflection.FieldInfo'不能轉換爲'布爾'。
任何想法如何可以通過元素名稱和測試/比較/返回值「索引」到結構?
工作了一個魅力,謝謝。命名:我只是在示例中填入任何舊名稱。我不得不說,雖然info.GetValue(p),傳遞原始對象p作爲參數,似乎非常直觀。 – 2015-04-02 11:04:10
太棒了!我明白你的意思,但你必須記住,字段信息對象是通過使用對象評估者的類型而不是對象的實例來創建的。所以'p.GetType()。GetField(whichOne)'和'GetType(Perms).GetField(whichOne)'是一樣的。 – 2015-04-02 11:15:11