3

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

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

4

3 回答 3

9

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

于 2008-10-22T11:25:46.127 回答
3

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

于 2008-10-22T11:27:25.890 回答
1

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

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

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

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

于 2008-10-22T11:28:46.340 回答