Относится сбой внешнего пространства имен с локальным пространством имен - PullRequest
0 голосов
/ 26 октября 2018

У меня есть проект с именем This.Is.My.Project, который содержит пространство имен This.Is.My.Project.Namespace.Это пространство имен содержит класс UserControl, производный от внешнего класса внешней сборки в пространстве имен с именем This.Is.Another.Project.Namespace.

namespace This.Is.My.Project.Namespace {
   public partial class MyClass : This.Is.Another.Project.Namespace.ExternalClass {
     ...
   }
}

Теперь компилятор подчеркивает слово Another и жалуется следующим сообщением:

Тип или имя пространства имен 'Другое' не существует в пространстве имен 'This.Is.My.Project.This.Is' (вам не хватает ссылки на сборку?)

Очевидно, что компилятор ищет внешний класс в моем локальном пространстве имен, потому что первые "суб" пространства имен, то есть 'This.Is', равны.Хотя на самом деле это должно быть больше похоже на то, что имя проекта представляет собой одно пространство имен вместо четырех вложенных, например так: (I.Am.Not.Nested).ActualNamespace.MyClass, поэтому в моем случае (This.Is.My.Project).Namespace.MyClass.

я могу избавиться от кода, стоящего за ошибкойвключив using This.Is.Another.Project.Namespace, но я сталкиваюсь с той же проблемой на стороне Xaml, где я не могу использовать ни одно включение.

<ext:ExternalClass x:Class="This.Is.My.Project.Namespace.MyClass"
                   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                   xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                   xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                   xmlns:ext="http://schemas.external.com/winfx/2008/xaml/external">
</dxe:ComboBoxEdit>

Я мог бы вручную переименовать пространство имен с This.Is.My.Project.Namespace на That.Is.My.Project.Namespace и избавиться от него.ошибки, но я бы хотел, чтобы пространства имен звучали как можно ближе, так как пользовательские элементы управления ведут себя так близко.Я бы даже добавил класс во внешнее пространство имен, если бы это было возможно.Есть ли способ сохранить имена пространств имен и избавиться от этой ошибки, или мне нужно переименовать пространство имен?

1 Ответ

0 голосов
/ 26 октября 2018

Что, если вы добавите использование в коде этого представления, тогда оно принимает пространство имен в xaml?

Кстати, хорошей практикой будет называть разные сборки с разными пространствами имен, которые лучше всегопредставляет их значение.

...