似乎自定义模拟器规则的 DLL、版本和命名空间被编码到 .ptd 中的开发策略中。
我想将自定义规则的代码等移动到新的命名空间/DLL 中。
我们使用序列化绑定代码处理自定义域对象样式。是否可以对自定义模拟器规则做同样的事情?
干杯,
尼尔
似乎自定义模拟器规则的 DLL、版本和命名空间被编码到 .ptd 中的开发策略中。
我想将自定义规则的代码等移动到新的命名空间/DLL 中。
我们使用序列化绑定代码处理自定义域对象样式。是否可以对自定义模拟器规则做同样的事情?
干杯,
尼尔
罗伯特的答案:
Petrel 2012 为工作步骤和流程提供了一个新属性:您需要实现 UniqueIdCore 方法以提供一个全局(跨所有项目)唯一 ID,该 ID 以 Guid 的形式固定且稳定。这个 UniqueId 将被序列化到 Petrel 项目中;它用于序列化的工作流程。在 2012 版本之前,如果您更改了工作步骤的程序集或命名空间,序列化的工作流将会中断。如果您稍后想要更改工作步骤类型,只要您提供相同的唯一标识符,您就可以在不破坏序列化工作流程的情况下这样做。
尼尔的答案:
关于与同事的对话,这是一个 arg pack 软化标识字符串问题,因此不幸的是,这意味着您无法将其移至不同的程序集,甚至无法更改类名。现在只有一个半解决办法(没有检查):将 arg 包留在旧的程序集/类名中并移动其他所有内容,但这当然不是一个好的解决方案。