验证索引器上的字段

时间:2014-05-19 20:44:25

标签: openiso8583.net

我正在通过设置索引器来创建新消息,例如:

Iso8583 isoMsg = new Iso8583();
isoMsg[field] = value; 

我注意到我没有收到任何例外;跟随代码我看到当我以这种方式设置字段时验证器没有运行;它仅在解压缩byte []消息时执行。您是否认为在设置字段时也可以调整格式和长度验证器?

提前致谢!

2 个答案:

答案 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;