В нашем коде С# у нас есть класс под названием Project. Наш базовый класс BusinessObject (который наследует все бизнес-объекты) определяет свойство:
public Project Project { get; set; }
Обычно это не проблема, если мы остаемся внутри С# -кода. Однако эти классы бизнес-объектов отображаются в веб-службах через провод. Некоторые языки потребления (например, ActionScript ActionScript) не могут обрабатывать свойство с тем же именем, что и его класс.
Этот конфликт имен происходит повсюду в нашем коде. Иногда легко изменить имя свойства или класса. Иногда это очень сложно. Мы разрушили наши мозги и не смогли найти хороший стандартный способ справиться с этим. Можно переименовать класс Project в ProjectType или ProjectInfo, но это уродливо и нарушает весь существующий код наших потребителей. Мы могли бы оставить имя типа одинаковым и изменить имя свойства в ProjectInfo, но это вызывает ту же проблему.
Есть ли у кого-нибудь рекомендации или рекомендации для такой ситуации?
EDIT:
Отвечая на некоторые из приведенных предложений:
- Методы не распространяются на провод, поэтому мы не можем использовать методы.
- Я бы предпочел стандартное соглашение об именах, которое также придерживается стандартных стандартов именования Microsoft.
- Предоставление другого контракта для Flex может быть опцией. Тем не менее, мы используем Weborb for Flex interop. Weborb использует отражение, чтобы точно соответствовать именам свойств, а не использовать сериализацию XML или SOAP. Если кто-то знает больше о пользовательской сериализации с помощью Weborb, это будет полезно.
ИЗМЕНИТЬ № 2:
Для справки мы закончили переименование свойства на что-то вроде:
public Project ProjectInfo { get; set; }