对Enum数据类型定义感到困惑?

时间:2010-03-11 00:45:41

标签: c# metadata definition

据我所知,我可以在我的项目类中定义一个新的Enum DataFormat, 假设,我不这样做,我可以从第三方DLL引用DataFormat。 然后我也可以使用第三方DLL元数据中的Enum DataFormat。

有什么区别?是否有定义新的Enum DataFormat的指南?感谢。

    public enum DataFormat
    {
        SECS = 0,
        S2_L = 4,
        S2_B = 8,
        S2_BOOLEAN = 12,
        S2_A = 16,
        S2_J = 20,
        S2_U1 = 24,
        S2_U2 = 25,
        S2_U4 = 26,
        S2_U8 = 27,
        S2_I1 = 28,
        S2_I2 = 29,
        S2_I4 = 30,
        S2_I8 = 31,
        S2_F4 = 34,
        S2_F8 = 35,
        S2_STRING = 36,
    }
}

2 个答案:

答案 0 :(得分:1)

我想遵循的一般规则是您定义类,枚举,方法和变量,并使用它们所需的最小范围。因此,如果仅从单个类访问枚举,则将其定义为该类的成员。如果它在类之外访问,则在类之外定义它。

答案 1 :(得分:1)

这里没有“元数据” - 枚举类型仍然是类型。如果一个已存在于单独的程序集中,那么您希望在另一个项目中重新创建它的唯一原因是,如果有一些特定原因导致您无法引用原始程序集。

如果你有两个(相同或几乎相同)相同类型的版本 - 任何类型 - 在任何解决方案中,“解决方案”包括引用的程序集,那么你正面临着一个非常真实的冲突风险或至少是混乱,没有我能看到的实实在在的好处。

如果该类型尚不存在,并且您在询问应该在何处创建...通常,类型存在于其依赖项开始的位置。如果它只是坐在外部组件中什么也不做,那么它就不应该存在。另一方面,如果外部程序集中的其他类依赖于它,那么它肯定需要进入其中一个外部程序集的依赖项,否则你可能会得到一个丑陋的循环命名空间依赖项,你将会需要消除(在游戏后期很难做到)。

所以,基本上:不要定义你自己的类型与已经存在的类型相同,除非你有一个很好的理由,并且不要在你实际上不想要的项目/程序集中定义任何类型用它。

相关问题