0

我正在用 C# 设计一个 API,我需要的一个功能是:

void CreateChild(string name, ChildType type);

其中 ChildType 定义为:

public enum ChildType { Number = 0, Text = 1 };

它应该是不言自明的,但本质上,它将创建相关对象的子对象,并且子对象包含的值类型将是字符串或基于枚举值的双精度值。

枚举是公开的ChildType,因此,我认为 API 的用户可以访问。

我担心的是某些语言无法理解签名中的枚举,并且无法针对此 API 进行编程。这是需要担心的事情,还是我的恐惧没有根据?

4

2 回答 2

2

只要您将整数值映射到它们的含义,您就应该清楚。任何没有枚举概念的语言仍然可以通过整数值来引用它。

使用 [Flags] 属性时要小心,因为它有点混淆了枚举的定义。我们用包括 Java 在内的多种语言自动生成了一个 SDK,当我们意识到我们的一些属性是 [Flags],但在 Java 端被映射到常规枚举时,不得不进行一些处理,因此 Java 不理解组合值。

于 2011-03-29T21:29:45.567 回答
0

.NET Framework 的基类库本身有许多使用枚举作为参数的方法(例如,string.Equals(string, StringComparison))。主要的 .NET 语言当然可以理解它们。任何没有枚举的语言都可能使用命名常量来模拟它们。

我怀疑在公共 API 中使用枚举对于其他语言不会有问题。

于 2011-03-29T21:30:23.293 回答