我正在通过设置索引器来创建新消息,例如:
Iso8583 isoMsg = new Iso8583();
isoMsg[field] = value;
我注意到我没有收到任何例外;跟随代码我看到当我以这种方式设置字段时验证器没有运行;它仅在解压缩byte []消息时执行。您是否认为在设置字段时也可以调整格式和长度验证器?
提前致谢!
答案 0 :(得分:2)
当您在邮件上调用.Pack()
时,验证程序会在字段上运行。
答案 1 :(得分:1)
我猜您只需将值设置为默认模板中的一个现有字段
创建Iso8583()时,它使用DefaultTemplate,它会在创建时将默认字段集添加到消息实例中。
Indexer属性派生自AMessage类,它继承自Iso8583类。
public string this[int field]
{
get { return this.GetFieldValue(field); }
set { this.SetFieldValue(field, value); }
}
这些方法:
protected string GetFieldValue(int field)
{
return this.bitmap[field] ? this.fields[field].Value : null;
}
protected void SetFieldValue(int field, string value)
{
if (value == null)
{
this.ClearField(field);
return;
}
this.GetField(field).Value = value;
}
因此,您的代码似乎为默认模板
中的一个字段设置了值isoMsg[field] = value;