通过用户输入扩展枚举
我有以下枚举,用于我的一个过滤器,并且非常适合我的对象模型。
public enum ColorGroups
{
White = 1,
Brown = 2,
Red = 3,
Black = 4
}
我关心的是将来当客户想要在集合中使用另一种颜色时,我如何扩展集合。 我希望系统是完全动态的,不需要技术人员更改此类事情的代码。
I have the below enum that I use for one of my filters and suit well to my object model
public enum ColorGroups
{
White = 1,
Brown = 2,
Red = 3,
Black = 4
}
My concern is in the future when a client want to another color to the collection how do I extend the collection. I want the system to be fully dynamic and does not require a technical person to alter the code for such things..
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您希望数据可供用户编辑,则可能不适合使用枚举。 枚举是编译时单元,因此需要开发人员(或一些黑客代码生成)。
相反,请考虑使用数据库表来存储此数据,并预先填充您的项目(也许还可以使用“系统”列来控制哪些项目是用户定义的,哪些是系统所需的)。 那么更改只是向表中插入(等)。
当然,您可以使用任何其他存储机制 - 例如,配置文件中的分隔字符串 - 但我猜您会想要系统中的某个位置有一个数据库?
If you want the data to be user-editable, it may not be suitable to use an enum. Enums are compile-time units, so will require a developer (or some hacky code generation).
Instead, consider using a database table for this data, pre-populated with your items (and perhaps with a "System" column to control which ones are user-defined vs required by the system). Then changes are just inserts (etc) to the table.
You can, of course, use any other storage mechanism - for example, a delimited string in a config file - but I'm guessing you'll want a database somewhere in the system?
在这种情况下,枚举可能不是适合该工作的工具。 您最好使用一组配置选项。 这些可以位于配置文件、注册表或数据库中,具体取决于您可用的内容以及您是否希望由开发人员、顾问还是由系统用户进行配置。
An enum may not be the right tool for the job in that case. You would be better off using a set of configuration options. These could be in a config file, in the registry or in a database, depending upon what is available to you and whether you want the configuration to be undertaken by a developer or consultant, or by the users of the system.
如果您不想,“完全动态”和“使用
enum
” 是互斥的技术人员必须参与进来做出改变。 在这里,数据库或配置文件是更好的选择。"Fully dynamic" and "use an
enum
" are mutually exclusive if you don't want a technical person to have to get involved to make changes. A database or a configuration file is a better choice here.