博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【C#】wpf中的xmlns命名空间为什么是一个网址,代表了什么意思(转载)
阅读量:5082 次
发布时间:2019-06-13

本文共 1164 字,大约阅读时间需要 3 分钟。

原文:https://blog.csdn.net/catshitone/article/details/71213371

 

新建一个wpf的项目,我们先来看下它默认的命名空间都是哪些?

可以看到xmlns有的是网址,有的是clr-namespace开头的一串字母。clr开头的比较好理解,就是运行时的命名空间,就像C#代码中的using xxxx之类的一样。

但是对于网址开头的命名空间有可能就有点疑惑了,它究竟代表的是什么?xaml文件被解析的时候会访问这个网址吗?如果这个网址那天不能get了,那我们的程序是不是就不能正常运行了。

在这里我先把结论告诉大家,然后在一步步分析是为什么。

 

结论:

以xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation这个为例,其实它就是System.Windows,System.Windows.Automation,System.Winjdows.Controls....等一系列命名空间的集合,是这个集合的【别名】,在浏览器输入这个网址有时候是不可访问的。如果自己定义类库的话,我把这个【别名】叫做张三也是可以的。微软建议,这个一般定义为公司网址,或者个人网址。

 

分析:

我们一步步来看看,为什么我们添加一个引用后,xmlns那里能够自动进行提示相应的网址。

 

1.用.NetReflector反编译WindowsBase.dll,可以看到:

那个http开头的命名空间,与N个传统的命名空间做了映射。

2.自定义一个类库也采用网址命名空间的这种方式。

新建一个wpf类库项目,名为WpfLibrary。更改其AssemblyInfo.cs文件,增加这么一行:

 

[csharp]   
 
  1. [assembly: XmlnsDefinition("www.wangzhi.com", "WpfLibrary")]  

注意添加using System.Windows.Markup;

 

添加后的就是这样子:

3.新建一个Wpf Application项目,在引用里添加第二步中生成的dll文件。

在添加命名空间的时候,我们可以看到自动提示:

4.再尝试另一种方式的命名空间

我们将添加的那句assemlby:xmlnsdefinition(.......)去掉,然后重新生成类库,在重新添加引用。那么这次智能提示里肯定没有www.wangzhi.com这个命名空间了。有的是这个:

5.由此可见,网址形式的命名空间等价于传统形式的命名空间,而且还可以是1对N的关系。网址形式的写一行,抵得上传统形式的N多行,节约手工代码量。

转载于:https://www.cnblogs.com/lsgsanxiao/p/10801512.html

你可能感兴趣的文章
Asp.net(C#) windows 服务{用于实现计划任务,事件监控等}
查看>>
java使用HttpServletRequest获取请求真实ip地址
查看>>
网络时钟服务器(网络授时服务器)在某机场空管系统中的应用
查看>>
Linux中终端和控制台区别
查看>>
『Python基础-4』字符串
查看>>
tp框架 使用ajax
查看>>
Mysql: 强制走索引:mysql between 日期索引 索引问题-日期索引使用
查看>>
改变word的语言字典
查看>>
Android APP的安装路径
查看>>
煮鸡蛋的启示
查看>>
python_列表结构模拟栈和队列
查看>>
IIS支持.apk下载的方法
查看>>
vue mounted中监听div的变化
查看>>
MySQL二进制日志功能介绍
查看>>
Domino单用户多账号多邮件地址配置
查看>>
Asp.net WebPages框架运行原理浅析
查看>>
网络爬虫-正方教务系统登录
查看>>
【LeetCode】数组-4(581)-给未排序数组中子数组排序使得整个数组排序 找到这个最小的子数组...
查看>>
FPGA网站推荐
查看>>
11.巨坑,注意了,关于显示不正常的问题,localstorage的存储问题
查看>>