【问题标题】:Exposing an enum from a library class从库类中公开枚举
【发布时间】:2008-10-22 11:21:59
【问题描述】:

在 C# 中,我使用的是定义枚举的库。我想允许我的代码的使用者(在不同的程序集中)将枚举值作为参数传递给我的一个函数,而不必自己引用底层库。

我有办法向我的消费者公开图书馆的枚举吗?

【问题讨论】:

    标签: c# .net oop enums


    【解决方案1】:

    您可以使用要支持的值定义自己的枚举,将其公开给您的消费者,然后在调用它之前将其简单地转换为库的枚举。由于枚举只是幕后的数字,因此很容易将一个枚举的值转换为另一个枚举的值。

    【讨论】:

    • 在一分钟内你得到了三个 ups 和一个答案?
    • 我正在密切关注这个问题,我怀疑这是我必须走的路。所以我给了他一个 ups 和答案。我不认为他得到另外两张赞成票特别神秘。
    • 这个问题并没有让我感到兴奋,就像美国东部标准时间上午 7:30。没有指责任何人,但看到这么快的行动有点奇怪。
    • 是的,我总是很惊讶我能在早上第一件事就得到对我愚蠢问题的高质量回答。 stackoverflow 很棒!
    • 美国东部标准时间上午 7:30 是英国的中午 12:30,有很多英国开发者活跃在这个网站上。午餐时间似乎是检查这个地方的最佳时机。
    【解决方案2】:

    您可以提供一个采用 int 的重载,描述哪些值是有效的,然后自己执行转换。或者,您可以在库中提供不同的枚举,然后在调用第二个库之前对其进行转换。

    【讨论】:

      【解决方案3】:

      我真的不知道,这样做的合理原因是什么(“消费者从我的程序集中的类型调用方法”和“消费者没有我的程序集作为参考”的组合),但有两种方法。

      第一个(推荐): 您应该将程序集分成两部分。一个带有枚举类型定义,第二个带有函数。消费者只会引用“第一个”程序集。

      第二个(不推荐): 您可以在参数中使用 (sbyte/(u)short/(u)int/(u)long 来代替枚举。

      但我认为,您的对象模型设计不匹配。

      【讨论】:

        猜你喜欢
        • 2018-10-25
        • 1970-01-01
        • 1970-01-01
        • 2011-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多