我目前正在尝试使用 ZXing 库在 Windows Phone 7.5 中开发移动条形码阅读器。看到我在这里发帖,你可能已经猜到我遇到了一些我不知道解决办法的问题。
问题如下: ZXing 库允许多种条形码格式 - 但是,我想包含一个设置菜单,让用户专门关注一个条形码。
BarcodeFormat 对象是静态的,包含我要分配的只读成员(BarcodeFormat 类型)。
看到和听到反射是这种动态行为的有力武器,我想我应该试一试。
到目前为止,我的代码可以使用 ZXing 获取所有可能的格式
MemberInfo[] plist = typeof(BarcodeFormat).GetMembers();
这适用于获取格式的名称,这意味着我可以成功地在列表中显示名称。但是在尝试将这些格式分配给实际阅读器时遇到了问题,因为我只有 MemberInfo 而不再是 BarcodeFormat。
到目前为止,我只找到了用户想要动态访问(设置/获取)变量的示例。然而,提议的解决方案似乎不适合我的问题——至少我没有找到任何方法来以这些方式分配格式。
任何帮助都会很棒:) 非常感谢。
编辑: BarcodeFormat 是这样使用的:
WP7BarcodeManager.ScanMode = BarcodeFormat.ITF;
在此示例中,仅接受 ITF(交织 2 出 5)格式的条形码。
到目前为止,我已经尝试了以下方法。
只需分配 MemberInfo 对象而不是原始 BarcodeFormat 对象。
将 MemberInfo 对象转换为 BarcodeFormat。
我尝试使用 FieldInfo 和 getValue,但似乎我必须创建一个示例对象并将值分配给所需的字段才能获取值。这不能在这里完成,因为对象是静态的并且字段是只读的。
整个 ZXing 库被编译为我将项目链接到的 DLL。(它似乎正确链接,因为其他一切正常)。BarcodeFormat 的示例声明如下所示
public static readonly BarcodeFormat ITF