0

私は C# で API を設計しています。必要な関数の 1 つは、次のようなものです。

void CreateChild(string name, ChildType type);

ChildType は次のように定義されます。

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

これは自明ですが、本質的には、問題のオブジェクトの子を作成し、子に含まれる値の型は、列挙型の値に基づいて文字列または double になります。

列挙型は公開され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 に答える