現在、ZXingライブラリを使用してWindowsPhone7.5でモバイルバーコードリーダーを開発しようとしています。私がここに投稿しているのを見て、あなたは私が解決策を知らないある種の問題に直面していることをすでに推測しているかもしれません。
問題は次のとおりです。ZXingライブラリでは複数のバーコード形式を使用できますが、ユーザーが1つのバーコードに特に焦点を合わせるための設定メニューを含めたいと思います。
BarcodeFormat-objectは静的であり、割り当てたい読み取り専用メンバー(BarcodeFormatタイプ)が含まれています。
リフレクションがこのようなダイナミックな振る舞いのための強力な武器であることを見て聞いて、私はそれを試してみようと思いました。
これまでのところ、ZXingを使用してすべての可能な形式を取得するコードがあります
MemberInfo[] plist = typeof(BarcodeFormat).GetMembers();
これは、フォーマットの名前を取得するために機能します。つまり、リストに名前を正常に表示できます。しかし、これらの形式を実際のリーダーに割り当てようとすると、MemberInfoしかなく、BarcodeFormatがなくなったため、問題が発生します。
これまでのところ、ユーザーが変数に動的にアクセス(設定/取得)したい例のみを見つけました。しかし、提案された解決策は私の問題に適合していないようでした-少なくとも、それらの方法でフォーマットを割り当てる方法は見つかりませんでした。
どんな助けでも素晴らしいでしょう:)どうもありがとうございました。
編集:BarcodeFormatは次のように使用されます:
WP7BarcodeManager.ScanMode = BarcodeFormat.ITF;
この例では、ITF(5つのうち2つがインターリーブされている)形式のバーコードのみが受け入れられます。
私はこれまでに次のアプローチを試しました。
元のBarcodeFormatオブジェクトの代わりにMemberInfoオブジェクトを割り当てるだけです。
MemberInfoオブジェクトをBarcodeFormatにキャストします。
FieldInfoとgetValueを使用しようとしましたが、値を取得するには、サンプルオブジェクトを作成し、必要なフィールドに値を割り当てる必要があるようです。オブジェクトは静的であり、フィールドは読み取り専用であるため、これはここでは実行できません。
ZXingライブラリ全体は、プロジェクトをリンクするDLLとしてコンパイルされます。(他のすべてが機能するため、正しくリンクされているようです)。BarcodeFormatの宣言例は次のようになります
public static readonly BarcodeFormat ITF