转:.NET特性与反射】的更多相关文章

C#特性和反射 .NET编译器的任务之一就是为所有定义和引用的类型生成元数据描述.除了程序集中标准的元数据外,.NET平台还支持特定(attribute)把更多的元数据嵌入到程序集中. .NET特性扩展了抽象的System.Attribute基类,.NET中有很多预定义的特性,例如:[DllImport].[Obsolete]和[Serializable]等等. 看一个Obsolete使用的例子,Obsolete特性用来标记不用的类或成员,当其他程序试图访问该项的时候,将会得到一个警告或错误描述…
为了解决从数据库读取的表字段和自己建的viewModel字段名称不相符的问题 本人小白,初次将特性及反射应用到实例,写的不好的地方还请大家多多包涵 新建一个控制台应用程序命名为ReflectAndAttribute 自定义一个特性MTestyAttribute namespace ReflectAndAttribute { [AttributeUsage(AttributeTargets.Property)] public class MTestyAttribute:Attribute { pu…
EF+LINQ事物处理   在使用EF的情况下,怎么进行事务的处理,来减少数据操作时的失误,比如重复插入数据等等这些问题,这都是经常会遇到的一些问题 但是如果是我有多个站点,然后存在同类型的角色去操作同一条数据的同一个字段的话,那就需要对数据库进行操作,这是数据库里面的事务了 这个另外再说. 这里有这么一个很好的解决方式,EF6里面提供了这么一个方式来处理事物 Database.BeginTransaction() : 为用户提供一种简单易用的方案,在dbEntitys 中启动并完成一个事务 -…
本篇内容是特性和反射的最后一篇内容,前面三篇文章: 详解C#特性和反射(一) 详解C#特性和反射(二) 详解C#特性和反射(三) 一.晚期绑定(Late Binding)是一种在编译时不知道类型及其成员,而在运行时创建指定类型的实例并调用其成员的技术,使用命名空间System中的Activator类来实现晚期绑定,例如: Type myType = Type.GetType(myClassName); //首先获取类型信息 object myObj = Activator.CreateInsta…
.NET编译器的任务之一就是为所有定义和引用的类型生成元数据描述.除了程序集中标准的元数据外,.NET平台还支持特定(attribute)把更多的元数据嵌入到程序集中. .NET特性扩展了抽象的System.Attribute基类,.NET中有很多预定义的特性,例如:[DllImport].[Obsolete]和[Serializable]等等. 看一个Obsolete使用的例子,Obsolete特性用来标记不用的类或成员,当其他程序试图访问该项的时候,将会得到一个警告或错误描述. static…
详解C#泛型(二)   一.自定义泛型方法(Generic Method),将类型参数用作参数列表或返回值的类型: void MyFunc<T>() //声明具有一个类型参数的泛型方法 { Type genericType = typeof(T); //在泛型方法体内部获取类型参数的类型信息 //do… } //调用泛型方法 MyFunc<int>(); 1.声明泛型方法时,可以在参数列表中使用这个类型参数:void MyFunc<T>(T obj) { }:此时在调用…
1.debug调试模式: *使用这种模式,调试程序(看到程序运行停止在这一行) -显示出来行号 -双击左边,出现一个圆点,表示设置了一个断点 *使用debug as方式,运行程序 -特使是否进入到调试界面,yes -在断点那里,有一个绿色的条,表示程序停止在这一行,没有向下运行 *可以让程序向下执行: -使用 step over 快捷键是 F6(单步执行) -resume F8:表示调试结束,执行直接向下运行 **比如当前的断点之后还有断点,就会跳到下一个断点 **如果当前的断点后面没有断点,程…
使用特性(Attribute)可以将描述程序集的信息和描述程序集中任何类型和成员的信息添加到程序集的元数据和IL代码中,程序可以在运行时通过反射获取到这些信息: 一.通过直接或间接的继承自抽象类System.Attribute可以创建自定义的特性类,自定义的特性类必须声明为公共类,命名一般使用Attribute结尾以保证可读性,自定义特性可以附加到大多数元素声明中,也可以使用特性System.AttributeUsage(该特性只能用于特性类声明)指定该特性所能生效的范围及其它特性特征参数: […
类型信息(Type Information)用来表示类型声明的信息,通过抽象基类System.Type的实例存储这些信息,当使用反射时,CLR获取指定类型的Type对象,通过这个对象即可访问该类型的任何信息,是反射的核心用法:有以下几种方式获取指定类型的Type对象: Type myType = typeof(MyType); //其中MyType是指定的类型 myType = myObj.GetType(); //其中myObj是指定类型的实例 myType = Type.GetType(my…
使用反射(Reflection)使得程序在运行过程中可以动态的获取对象或类型的类型信息,然后调用该类型的方法和构造函数,或访问和修改该类型的字段和属性:可以通过晚期绑定技术动态的创建类型的实例:可以获取程序集中的所有类型信息:可以在动态构建新类型:还可以检索元素所添加的特性: ※反射相关的类基本都位于命名空间System.Reflection中: ※动态构建新类型的类位于命名空间System.Reflection.Emit中: 一.访问或修改类型的实例.静态字段: public class My…