在命名空间中的URL引用,它们是如何工作的?

14 浏览
0 Comments

在命名空间中的URL引用,它们是如何工作的?

我了解常规的XML命名空间,例如:

 xmlns:myExample="clr-namespace:WindowsApp.MyNamespace;assembly=MyAssembly"

但我经常看到以下形式的命名空间:

 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" 

这些URL命名空间是什么意思?当我在浏览器中输入这些URL时它们不起作用,有谁知道这是怎么工作的?提前谢谢。

0
0 Comments

问题的原因和解决方法如下:

问题的原因:命名空间是由 URI 标识的,而 URI 被视为字符串。如果两个命名空间标识符的字符串不相等,则它们表示不同的命名空间。

解决方法:使用不同的命名空间标识符,可以使相同的名称引用不同的内容。可以通过声明命名空间前缀来实现这一点。例如,在XML中可以这样写:。其中的两个TableName元素由于命名空间的不同而引用了不同的内容。

0
0 Comments

URL references in namespaces, how do they work?

在XAML中使用URL引用的命名空间,它们是如何工作的?

问题出现的原因:提问者不清楚URL引用的命名空间是如何工作的。

解决方法:通过使用XmlnsDefinitionAttribute来映射CLR命名空间。

在XAML处理器中,XmlnsDefinitionAttribute用于CLR映射,它允许将一个或多个CLR命名空间映射到一个xmlns,并且可以在程序集信息中定义。

在XAML中,只有特定的命名空间才是特殊的,可以映射到CLR类型。其他命名空间只是普通的XML命名空间,不映射到任何内容。

XAML是XML的一部分,关于XML的所有内容同样适用于XAML。甚至在XAML中使用的“特殊”命名空间也是XML命名空间。它们在从XAML构建CLR类型时具有额外的重要性。其他命名空间只具有与普通XML命名空间相同的重要性。

命名空间本身并不起作用,只是编译器根据声明中包含的映射信息来查找相应的类。使用"clr-namespace:"限定的命名空间会直接映射,而其他命名空间则需要通过各自程序集中的XmlnsDefinitionAttribute进行查找。

URL引用的命名空间实际上是普通的XML命名空间,并不是用于映射CLR命名空间的。

因此,URL引用的命名空间只是XML命名空间,而不具有特殊的映射功能。

如果命名空间的程序集上有XmlnsDefinitionAttribute属性,那么它们可以被映射到CLR命名空间。

需要注意的是,URL引用的命名空间并不是用于映射CLR命名空间的,而是普通的XML命名空间。如果提问者想要知道它们是如何映射的,那么答案就是通过XmlnsDefinitionAttribute来映射。

需要注意的是,提问者可能对XML命名空间一无所知,所以指出它们实际上不是常见的URL可能是个好主意。

由于提问者可能对内部细节不感兴趣,所以他们可能不关心映射的细节。

总结一下,URL引用的命名空间实际上是普通的XML命名空间,并不具有特殊的映射功能。它们可以通过XmlnsDefinitionAttribute来映射到CLR命名空间,前提是它们的程序集上有该属性。

0