c# - 如何使用枚举进行版本控制
问题描述
我正在开发一个 Revit 插件,我需要在其中分配数据字段(带有外部存储)。我无法预见将来需要多少数据字段,因此我需要计划一些版本控制。我需要拥有完整的版本历史记录,以便以后对版本处理器进行编程,以将使用旧版本制作的实体升级到最新版本。
我需要按名称(字符串)引用这些字段,但我想使用枚举,因为在您键入时很容易从列表中选择所需的值。
例子:
现在:
enum BoolFields_v1 { IsPipe, IsSomething }
未来:
enum BoolFields_v2 { IsPipe, IsSomething, IsSomethingElse }
但是,在我的代码中,我想在全局范围内引用一个枚举:BoolFields。我希望我可以做类似的事情:
public enum BoolFields { get {return BoolFields_v2} }
private enum BoolFields_v1 { IsPipe, IsSomething }
private enum BoolFields_v2 { IsPipe, IsSomething, IsSomethingElse }
好吧,我知道这是不可能的。任何想法如何实现?
解决方案
我也遇到过类似的问题,我选择了命名空间。最新版本始终位于非版本化命名空间中,旧版本是:
namespace My.Product
{
private enum BoolFields { IsPipe, IsSomething, IsSomethingElse }
}
namespace My.Product.V1
{
private enum BoolFields { IsPipe, IsSomething }
}
当您移动到新版本时,您可以从当前版本复制相关模型并将其移动到V2
. 然后您可以毫无问题地编辑当前版本。
在这种情况下,将数字添加到您的枚举将简化旧版本到新版本的转换。
推荐阅读
- webi - Adding a new list item column to existing horizontal block?
- python-3.x - 旧访问文件和 PYODBC
- azureservicebus - Azure 服务总线出站流量
- ios - application(_:didReceiveRemoteNotification:fetchCompletionHandler:) - 永远不会被调用
- javascript - SyntaxError:标识符在数字文字 ts(1351) 之后立即开始
- twitter-bootstrap - 带有下拉菜单的 Bootstrap 4.6 导航栏项目不会与其他菜单项垂直对齐
- windows - Get-PackageSource 不返回最近添加的包
- ibm-watson - 如何从外部查询中获取结果并在对话中使用
- apache - Apache 无法执行通过 FTP 传输的文件
- javascript - 当我通过 JS 单击按钮时,如何折叠(前后)一个部分?