1

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

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

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

提前致谢!

4

2 回答 2

2

当您调用.Pack()消息时,验证器会在字段上运行。

于 2014-05-20T08:09:24.240 回答
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; 
于 2014-05-20T14:22:42.027 回答