在我们的服务器、客户端程序中,借助EntityModel.xml进行通讯规约,大部分代码实现了自动生成。
客户端代码中,会为某些Entity添加某些属性,这些属性不影响C/S共同使用的数据结构,所以基本的DataStruct.cs必须根据EntityModel.xml生成。但是我们UI所需要的一些属性,例如LogDescription(这个attribute为每个field字段定义格式化日志输出的label文字,例如 Instrument ID字段定义的logdescription属性值为“合约”,日志最终显示在界面的日志面板中)需要在ViewModel.xml中定义并根据EntityModelMerged.xml生成,这样就需要对STPDataStruct.cs中已经自动生成的Fields添加一些额外的东西,我们这里是需要添加[LogMessage]属性。
参考https://stackoverflow.com/a/19462397/351993。
遇到的一个问题是struct不能使用MetadataTypeAttribute。所以另外定义了一个Helper类,而没有采用MetadataTypeAttribute方法。
但是其他情况下,参考资料中的解决方案足够可行。