Я бы предпочел Company.Product.UI, по некоторым причинам. Я бы тоже использовал это название для Интернета.
Относительно проблемы 1, если это базовые типы, вы можете включить Base в имя класса.
Затем, как правило, у вас есть набор специфичных для домена элементов управления, которые не конфликтуют со встроенными типами.
Если вы также сохраняете оболочки для общих элементов управления пользовательского интерфейса (TextBox, DropDownList и т. Д.), То я бы порекомендовал использовать для них префикс,
может быть, этот префикс является сокращенным названием продукта.
И затем, если вы сделаете это, то вы можете быть последовательными, и делать это для всех типов,
независимо от того, являются ли они неоднозначными именами или нет.
Я говорю вам по собственному опыту.
Вы будете постоянно зависать над переменными, чтобы увидеть их полные имена типов и т. Д., Вы будете использовать псевдонимы и т. Д.
Код будет сложнее читать.
Проблема 2: На уровне GUI я склонен нарушать эти правила, потому что вам нужно согласованность имен (общие глаголы; Показать, Изменить, Список). Если руководство говорит вам иначе, я бы поверил, что это потому, что оно просто недостаточно конкретно.