我一直在使用quickfix和Visual Studio,看到我可以从FIX41 :: NewOrderSingle初始化FIX42 :: NewOrderSingle的实例,没有编译器问题,甚至在运行时也没有问题。当我有一个带有FIX :: Message等参数的方法时,我也可以这样做,我可以传入FIX41 :: NewOrderSingle或FIX42 :: NewOrderSingle而没有任何问题。 这使我不需要为每个类型参数创建重载方法。 这是一件好事吗?还是我在找麻烦? 感谢
答案 0 :(得分:2)
您可以将FIX :: Message作为参数传递,但您将无法使用生成的typesafe字段访问器。如果您需要灵活性而不是类型安全性,那不一定是坏事,但这意味着您必须更加谨慎地访问和解释消息数据。
采用另一个FIX :: Message的FIX :: Message构造函数将源消息的内部FieldMap从一个消息复制到另一个消息。对于来自不同FIX版本的两个NewOrderSingle,这可能会相当不错,但要注意在版本之间修改了类型的字段,或者在一个版本或另一个版本中不存在。您实际上可以使用构造函数构造任何生成的消息,该构造函数接受FIX :: Message的任何其他子类型。但是,如果消息不相关,这可能没有用,因为如果源消息可能对目标消息无效,则字段可能无效,尽管它不会导致编译时或运行时错误。