在 C# 中,我使用的是定义枚举的库。我想允许我的代码的使用者(在不同的程序集中)将枚举值作为参数传递给我的一个函数,而不必自己引用底层库。
有没有办法让我向我的消费者公开图书馆的枚举?
您可以使用要支持的值定义自己的枚举,将其公开给您的消费者,然后在调用它之前将其简单地转换为库的枚举。由于枚举只是幕后的数字,因此很容易将一个枚举的值转换为另一个枚举的值。
您可以提供一个采用 int 的重载,描述哪些值是有效的,然后自己执行转换。或者,您可以在库中提供不同的枚举,然后在调用第二个库之前对其进行转换。
我真的不知道,这样做的合理原因是什么(“消费者从我的程序集中的类型调用方法”和“消费者没有我的程序集作为参考”的组合),但有两种方法。
第一个(推荐):您应该将程序集分成两部分。一个带有枚举类型定义,第二个带有函数。消费者只会引用“第一个”组件。
第二个(不推荐):您可以在参数中使用 (sbyte/(u)short/(u)int/(u)long 代替枚举。
但我认为,您的对象模型设计不匹配。