我目前正在嘗試使用ZXing庫在Windows Phone 7.5中開發移動條形碼閱讀器。 看到我在這裏發帖,您可能已經猜到我正面臨某種我不知道解決方案的問題。在C#中,如何動態獲取靜態類的成員?
問題是: ZXing庫允許多個條形碼格式 - 但是,我想包括一個設置菜單,讓用戶專注於一個條形碼。
BarcodeFormat-object是靜態的,它包含我想分配的只讀成員(類型爲BarcodeFormat)。
視覺聽覺的反射是這樣的動態行爲的有力武器,我想我會試試看。
到目前爲止,我有一些代碼使用
MemberInfo[] plist = typeof(BarcodeFormat).GetMembers();
,用來獲取的格式的名稱,這意味着我可以成功地顯示在列表中的名稱的工作會從斑馬線所有可能的格式。 但是我試圖將這些格式分配給實際的閱讀器時遇到了問題,因爲我只有MemberInfo並且不再有BarcodeFormat。
到目前爲止,我只找到了用戶想要動態訪問(set/get)變量的例子。 然而,提出的解決方案似乎並不適合我的問題 - 至少我沒有找到任何方式來以這些方式分配格式。
任何幫助將是偉大的:) 非常感謝。
編輯: 的BarcodeFormat使用這樣的:
WP7BarcodeManager.ScanMode = BarcodeFormat.ITF;
在這個例子中,只有在ITF條碼(交錯2選自5)格式將被接受。
到目前爲止我嘗試以下方法。
只需指定MemberInfo對象,而不是原始的BarcodeFormat對象。
角色的的MemberInfo對象BarcodeFormat。
我試圖使用FieldInfo和getValue,但似乎我必須創建一個示例對象並將值分配給所需的字段以獲取值。這不能在這裏完成,因爲對象是靜態的並且該字段是隻讀的。
整個斑馬線庫被編譯爲我聯繫我的項目一個DLL。 (它似乎是正確鏈接的,因爲其他的工作)。BarcodeFormat的例子聲明如下所示
public static readonly BarcodeFormat ITF
什麼是你的問題,從的MemberInfo所獲得的價值在這種情況下,它會很高興知道他們是領域還是屬性,還是將問題分配給別的東西?你嘗試過什麼,失敗了? –
如果我說你在另一個對象的構造函數中需要這個BarcodeFormat,我是錯的嗎?如果是,您可以顯示您使用的「沒有反思的代碼」嗎? –
@RuneFS:我不知道如何從MemberInfo獲取值。 – Betaminos