-
[综合] XML(6)——XML扩展
1、XmlDocument 2、XPath 3、Namespace 4、Schema、DTD:在App.Config中“转到定义”会看到文件的定义约束文件,DTD约束能有哪些属性、能有哪些元素。 5、工具XMLSpy
101
热度 -
64
热度 -
[综合] 泛型(4)——泛型集合(dropped)
1、编写泛型版MyList,内部用ArrayList保存数据。提供:Tthis[intindex]、voidAdd(Titem)、intCount三个成员。 classMyList<T>{privateArrayListlist=newArrayList();publicTthis[in...
35
热度 -
[综合] 泛型(5)——泛型方法
1、泛型方法:方法也可以定义泛型,在方法名后用<>将类型标注即可。 staticIList<T>ToList<T>(ArrayListlist){IList<T>retList=newList<T>();foreach(objectobji...
66
热度 -
12
热度 -
[综合] 泛型(7)——泛型的约束
1、约束父类或者接口:AAA<T>whereT:IDbConnection 2、约束构造函数:AAA<T>whereT:new(),AAA<T>whereT:new()。 3、whereT:new()约束T必须有无参的构造函数。 4、约束对于泛型委托、泛型类都是一...
35
热度 -
101
热度 -
[综合] 反射(1)——程序集
1、所有.Net类都是定义在某个Assembly(程序集)中的,.Net基本类是定义在mscorlib.dll中。exe也可以看做是类库,也可以引用。.net的exe也是Assembly,.net中的exe和dll的区别就是exe中包含入口函数,其他没有区别,exe也可以当成dll那样引用、也可以反...
11
热度 -
[综合] 反射(2)——反射:Type类
1、Type类可以叫做“类的类”,一个类型对应一个Type类的对象,通过Type对象可以获得类的所有的定义信息,比如类有哪些属性、哪些方法等。Type就是对类的描述。 2、获得Type对象的方法: 通过类获得Type:Typet=typeof(Person) 通过对象获得类的Type:Typet=...
78
热度 -
[综合] 反射(3)——英文名词
Property:属性 Field:字段 Method:方法 Event:事件 Type:类型 Instance:实例 Member:成员 Plugin:插件 Addin:插件
57
热度 -
[综合] 反射(4)——Type反射
1、Activator.CreateInstance(Typet)会动态调用类的public无参构造函数创建一个对象,返回值就是创建的对象,如果类没有无参构造函数就会报错。 2、应用:动态创建对象SayHello。接口声明到单独的项目中,避免循环引用。代码如下: usingSystem; using...
73
热度 -
[综合] 反射(5)——动态调用成员
classPerson{publicstringName{set;get;}publicintAge{set;get;}publicvoidSayHello(){Console.WriteLine("你好,我是{0},我的年龄是{1}",Name,Age);}publicvoidIncAge(){A...
92
热度 -
[综合] 反射(6)——反射的一个经典应用:反射调用私有成员
调用private方法: Personp1=newPerson();Typetype=p1.GetType();//BindingFlags.Instance表示是实例方法,也就是不是static方法MethodInfomHaha=type.GetMethod("Haha",BindingFlags...
25
热度 -
[综合] 反射(7)——IDE(16)——VS系列(16)——数组都是从Array继承的、代码调试
1、数组都是从Array继承的,用反射的方法看。 2、多用断点调试,少用单步调试,单步调试通常意味着思维很乱。F10、F11表明不知道确切的执行顺序!调试就是在期望的执行结果和实际的执行结果进行对比,查找不同,找到问题。“应该执行了”是期望,要用调试的方法看看到底有没有执行。
106
热度 -
[综合] 反射(9)——目录、文件
1、获得当前exe所在目录:首先用System.Reflection.Assembly.GetExecutingAssembly().Location得到Exe的全路径,Path.GetDirectoryName得到目录路径。注意不要用Directory.GetCurrentDirectory()来...
57
热度 -
[综合] 反射(10)——动态创建菜单、开发步骤
一、动态创建菜单 1、菜单项不仅可以静态设计,也可以动态的增加。 设计父菜单项,在Load事件中ToolStripItemitem=工具ToolStripMenuItem.DropDownItems.Add("1");编写for循环添加10项。 响应菜单事件,item.Click+=newEven...
84
热度 -
[综合] 反射(11)——练习:日志框架
Logger.Log(“日志消息”); 定义ILog接口: publicinterfaceILog {voidLog(stringmsg); } 读取C盘下c:\log.xml配置文件: <config><loggertype="Itcast.SqlLogger"path="c:\...
28
热度 -
[综合] Attribute标记(1)——Attribute
1、Attribute有很多种翻译:属性(容易和类的属性(Property)混淆)、标记、特性、注解等。 2、Attribute用来对类、属性、方法等标注额外的信息,贴一个标签。Attribute是一个类。 3、Attribute的格式:[Attribute类名(构造函数参数)],如果没有参数可以简...
25
热度 -
[综合] Attribute标记(2)——自定义Attribute
1、Attribute都从System.Attribute类继承,类名一般以Attribute结尾。 2、创建构造函数。 3、标记类的用途—AttributeUsage标记(标记的标记):AttributeTargets:可以添加到哪些成员上。AllowMultiple:是否允许在一个成员上标记这个...
100
热度 -
[综合] 正则表达式(22)——Attribute标记(3)——练习:正则表达式校验Attribute
编写正则表达式验证器,在属性上根据需要添加RegexValidatorAttribute。这种用法在ASP.NetMVC中用的非常多。 classCustomer {[RegexValidator(@"^\S+@\S+$")]publicstringEmail{get;set;}[RegexVali...
84
热度