我正在通过设置索引器创建一条新消息,例如:
Iso8583 isoMsg = new Iso8583();
isoMsg[field] = value;
我注意到我没有收到任何异常;按照我看到的代码,当我以这种方式设置字段时,验证器没有运行;它仅在解包 byte[] 消息时执行。您是否认为在设置字段时也可以调整格式和长度验证器以运行?
提前致谢!
我正在通过设置索引器创建一条新消息,例如:
Iso8583 isoMsg = new Iso8583();
isoMsg[field] = value;
我注意到我没有收到任何异常;按照我看到的代码,当我以这种方式设置字段时,验证器没有运行;它仅在解包 byte[] 消息时执行。您是否认为在设置字段时也可以调整格式和长度验证器以运行?
提前致谢!
当您调用.Pack()
消息时,验证器会在字段上运行。
我猜您只是将值设置为默认模板中的现有字段之一
当您创建 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;