私は質問を複製しました(BCDのトラック2 - 'D'文字)。
フィールドを Binary として扱う ( BCD-Length-Indicator を使用!!! ) のは、うまくいくかもしれないかわいいトリックです。しかし、まだ - 方法はありません:
public static FieldDescriptor.BinaryVar(..., ILengthFormatter lengthFormatter)
したがって、それを追加する代わりに (BinaryVar フィールドの場合はとにかく実行する必要があります)、以下を追加できます。
public static FieldDescriptor.BcdVar(..., IFieldValidator validator)
そして呼び出します:
msg[Bit._035_TRACK_2_DATA] = FieldDescriptor.BcdVar(2, 37, FieldValidators.Track2);
「D」はBCDとして扱われます - 銀行は何を知っていますか...
右側のパディングについては、アジャスターが便利なところだと思います。繰り返しますが、次のように、 Adjusterパラメーターを使用して静的メソッドを追加する必要があります。
var setAdjuster = new LambdaAdjuster(setLambda: value => value.PadRight(value.length + 1, '0'));
確かに、フィールドを設定する前に値をパディングすることはできますが、それは楽しいことではありません (私たちはオタクですよね?)。
FieldDescriptor への静的メソッドの追加について- ジェネリックを使用することは可能だと思います
public static IFieldDescriptor Create(ILengthFormatter lengthFormatter, IFieldValidator fieldValidator, IFormatter formatter, Adjuster adjuster)
しかし、私は C# を初めて使用するので、私の理論について確認していただければ幸いです。
ありがとう。