代码之家  ›  专栏  ›  技术社区  ›  brien

从库类公开枚举

  •  2
  • brien  · 技术社区  · 17 年前

    在C中,我使用的是定义枚举的库。我希望允许我的代码的使用者(在不同的程序集中)将枚举值作为参数传递给我的某个函数,而不必引用基础库本身。

    我有没有办法向我的消费者公开库的枚举?

    3 回复  |  直到 17 年前
        1
  •  8
  •   jezell    17 年前

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

        2
  •  3
  •   Will    17 年前

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

        3
  •  1
  •   TcKs    17 年前

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

    第一个(推荐): 你应该把你的组件分成两部分。一个具有枚举类型定义,另一个具有函数。消费者将只引用“第一个”组件。

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

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