【发布时间】:2011-12-31 04:26:47
【问题描述】:
我有一组对象,它们都实现了一个(自定义)接口:IAuditEvent。
每个对象都可以存储在数据库中,并且每个对象类型都使用一个唯一的数字 id。
存储对象的方法围绕List<IAuditEvent>循环,因此它需要知道每个对象的具体类型才能存储正确的数字id。
在IAuditEvent 上具有枚举属性以便每个对象都可以使用唯一的枚举值来标识其类型是不好的做法吗?
我可以看到最简单的解决方案是编写一个将Type 转换为整数的方法,但是如果我需要枚举审计事件以用于其他目的怎么办?将我的枚举属性放在IAuditEvent 上仍然是错误的吗?
【问题讨论】:
-
为什么让
IAuditEvent的成员来识别特定类型的事件是不好的做法?有哪些潜在问题? -
哈哈!嗯,这就是我要问的。 ;-) 我认为有些人会争辩说,您给对象提供了两种不同的方式来识别自己,而这两种方式可能会不一致。
-
“通过枚举属性识别对象”是什么意思? GetType() 可用于识别对象的类型,而不是识别对象本身...
-
谢谢@user1027167。我已经澄清了我的问题。
-
实现接口的目的是抽象出实现——IOW你使用接口而不关心实现类型,因此不需要用枚举值来标识它。