我有一个名为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
下面加下划线,并发出以下消息:
类型或命名空间名称"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
并消除错误,但我希望名称空间听起来尽可能接近,因为用户控件的行为如此接近。如果可能的话,我甚至会将类添加到外部命名空间中。有没有一种方法可以保留我的命名空间名称并消除这个错误,或者我必须重命名我的命名空间?
如果在该视图的代码后面添加using,它会接受xaml中的命名空间吗?
顺便说一句,用最能代表其含义的不同名称空间命名不同的程序集是一种很好的做法。