Я проектирования API в C#, и одной функции мне нужно что-то вдоль линий:Использование перечислений в API
void CreateChild(string name, ChildType type);
Где ChildType определяется как:
public enum ChildType { Number = 0, Text = 1 };
Это должен быть достаточно понятным, но, по существу, он создаст дочерний объект рассматриваемого объекта, а тип значения, который содержит ребенок, будет либо строкой, либо двойной, основанной на значении перечисления.
Перечисление ChildType
является общедоступным, поэтому, я полагаю, было бы доступно для пользователей API.
Я обеспокоен тем, что некоторые языки не понимают перечисление в подписи и не смогут запрограммировать этот API. Это что-то беспокоит, или мои опасения необоснованны?
Я думаю, вы хотите узнать больше о написании CLS-совместимого кода, о чем я мало что знаю. Быстрый google показывает, что перечисления поддерживаются системой общего типа в .NET Framework: http://msdn.microsoft.com/en-us/library/zcx1eb1e.aspx – blizpasta
Вы можете добавить атрибут CLSCompliant к своей сборке и позволить компилятор проверяет это для вас. –
В этом конкретном случае вам следует рассмотреть возможность разделения на 'CreateNumberChild (string)' и 'CreateTextChild (string)', что может быть немного более полезным. (Предполагая, что обычный прецедент - жесткий код ChildType в точке вызова.) –