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