引用的外部名称空间与本地名称空间崩溃

时间:2018-10-26 16:27:51

标签: wpf namespaces user-controls .net-assembly

我有一个名为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方面遇到了相同的问题,无法使用任何include。

<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 :(得分:0)

如果您在该视图后面的代码中添加了using,那么它会接受xaml中的名称空间吗?

顺便说一句,优良作法是用最能代表其含义的不同命名空间命名不同的程序集。