微信小号微信被盗了怎么恢复办

自定义表单asp.net asp.net实现反射,泛型,静态方法快速获取表单值到Model的方法-ASP.NET教程
当前位置:&>&&>& &
asp.net实现反射,泛型,静态方法快速获取表单值到Model的方法
自定义表单asp.net asp.net实现反射,泛型,静态方法快速获取表单值到Model的方法
| 来源:网络 | 关键字:
本文实例讲述了asp.net实现利用反射,泛型,静态方法快速获取表单值到Model的方法。分享给大家供大家参考,具体如下:这是初级的,很简单,牛人可以不看了。不过还算实用。在项目中经常需要处理表单,给
本文实例讲述了asp.net实现利用反射,泛型,静态方法快速获取表单值到Model的方法。分享给大家供大家参考,具体如下:这是初级的,很简单,牛人可以不看了。不过还算实用。在项目中经常需要处理表单,给model赋值,很烦人的一些重复代码。如下边的代码:News news = new News();news.Id = int.Parse(Request.Form["Id"]);news.Category = int.Parse(Request.Form["Category"]);news.Title = Request.Form["Title"];news.CreateTime = DateTime.Parse(Request.Form["CreateTime"]);经常还会出现写错情况,尤其是加班写这种无聊代码的时候...使用反射,泛型,静态方法可以很容易解决这个问题。说的好像有点高深,其实超级简单。见代码。public static class HenqPost&T& where T: new(){
/// &summary&
/// 为Model赋值
/// &/summary&
/// &typeparam name="T"&Model&/typeparam&
/// &param name="t"&model&/param&
/// &param name="form"&Request&/param&
/// &returns&&/returns&
public static int GetPost&T&(ref T t, NameValueCollection form)
Type type = t.GetType();//获取类型
PropertyInfo[] pi=type.GetProperties();//获取属性集合
foreach( PropertyInfo p in pi )
if (form[p.Name] != null)
p.SetValue(t, Convert.ChangeType(form[p.Name], p.PropertyType),[.Cn] null);//为属性赋值,并转换键值的类型为该属性的类型
va++;//记录赋值成功的属性数
}}只所以用静态方法,主要是图方便,不用new。以后所有的表单都可以很简单的处理了,两行代码搞定。News news = new News();HenqPost&News&.GetPost(ref news, Request.Form);//烦人的为实体类赋值就Over了。不需要任何配置,约定是最好的配置。约定:表单项的名称最好和实体类的属性名字对应(如果你要不一样,反射方法根据自己的规则改造下)。为表单赋值,如果是webform的话也可以采取这种方式,可以自己写下,原理差不多。希望本文所述对大家asp.net程序设计有所帮助。
网友评论仅供其表达个人看法,并不表明网易立场。C# 获取传入对象的所有属性名称
C# 获取传入对象的所有属性名称
prolist p1 = new prolist();
List lt = getattr(p1);
//使用泛型,返回传入对象的属性,名称
public List getattr( T dx )
List ls = new List();
Type types = dx.GetType();
foreach (var p in types.GetProperties())
// p.PropertyType
ls.Add(p.Name);
//实体对象
public class prolist
private string _pid = &0&;
private string _pmoney = &0&;
public string pid
set { this._pid = }
get { return this._ }
public string pmoney
set { this._pmoney = }
get { return this._ }本帖子已过去太久远了,不再提供回复功能。2013年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第三
2017年6月 .NET技术大版内专家分月排行榜第一2017年5月 多媒体开发大版内专家分月排行榜第一2017年4月 多媒体开发大版内专家分月排行榜第一2016年1月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第一2015年11月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第一2015年10月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第一2015年9月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第一2015年7月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第一2015年6月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第一2015年3月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第一2015年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第一2015年1月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第一2014年12月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第一2014年11月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第一2014年10月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第一2014年9月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第一2014年8月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第一2014年7月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第一
2017年5月 .NET技术大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。1119人阅读
学编程一年多,现在才真正开始用反射,有点晚了,但是用好反射真的很重要,算是很方便,这么久了不会用反射,其实是有一小点点的low的,所以准备好好学习一下,写博客记录一下,权当笔记和动力了.*^_^*/
What-反射是什么?
反射,Reflection,就是通过一个类对象,可以获取他所在类的其他全部成员和属性,包括私有的.
Why-为什么要使用发射?
1.获取该成员的其他属性信息来使用
例如我想写个导出表格,但是列名想定义在对应的实体类model中,好一一对应,代码侵入性小,容易维护,于是自定义了一个注解,放在这个model需要导出的变量上,我需要将这个model的对象作为方法传入,然后拿出这个类所有对象成员变量上定义的这个自定义属性.
2.配合泛型,写出通用的一个工具类,一般用于框架性的代码
例如:接着上个例子,我现在有两个表格要导出,部门表和员工表,所以有两个类,部门model,员工model.这个时候,可以使用泛型类型传参,然后通过反射获取传过来的类型的自定义注解信息
3.例如反射获取一个类的私有方法或者属性
例如:需要用到一个类里面的方法,但是这个方法是不对外暴露的,怎么办?我们不怕,因为我们有反射.
How-使用反射Start
首先我们定义这么一个类,分别定义的public,protected,private修饰的字段,属性,方法.,下面我们用反射获取试一下.
namespace ConsoleApplication1
public enum GenderEnum
public class WorkerModel
public string _name = "Hathway";
private int _id = 32;
protected bool _isAdmin = true;
public GenderEnum _gender = GenderEnum.G
public string Name { get; set; }
public GenderEnum Gender { get; set; }
private int Id { get; set; }
protected bool isAdmin { get; set; }
public void Android()
protected void iOS()
private void WindowPhone()
public WorkerModel()
public WorkerModel(string name, int id, GenderEnum gender, bool isAdmin)
定义这个类对象,我们去使用反射获取一下这个对象的各类信息
WorkerModel worker = new WorkerModel() {
Name = "Jay",
Gender = GenderEnum.Boy,
public static
void GetFieldValue(Object obj)
Type type = obj.GetType();
FieldInfo[]
fieldInfos = type.GetFields();
foreach (var f in fieldInfos)
string fieldName = f.N
string fieldType = f.FieldType.ToString();
string fieldValue = f.GetValue(obj).ToString();
Console.WriteLine("fieldName------&" + fieldName );
Console.WriteLine( "fieldType------&" + fieldType );
Console.WriteLine("fieldValue------&" + fieldValue);
Console.WriteLine("-------------------------------------------------------------------");
public static void GetPropertyInfo(Object obj)
Type type = obj.GetType();
PropertyInfo[] propertyInfo = type.GetProperties();
foreach (var p in propertyInfo)
string propertyName = p.Name
string propertyValue = p.GetValue(obj,null).ToString();
Console.WriteLine("propertyName------&" + propertyName);
Console.WriteLine("propertyValue-----&" + propertyValue);
Console.WriteLine("-------------------------------------------------------------------");
public static void GetMethodInfo(Object obj)
Type type = obj.GetType();
MethodInfo[] methodInfo = type.GetMethods();
foreach (var m in methodInfo)
string methodName = m.N
Console.WriteLine("methodName------&" + methodName);
Console.WriteLine("-------------------------------------------------------------------");
public static void GetMemberInfo(Object obj)
Type type = obj.GetType();
MemberInfo[] memberInfo = type.GetMembers();
foreach (var m in memberInfo)
string memberName = m.N
Console.WriteLine("memberName------&" + memberName);
Console.WriteLine("-------------------------------------------------------------------");
private static void GetConstructorInfo(Object obj)
Type type = obj.GetType();
ConstructorInfo[]
constructorInfo = type.GetConstructors();
foreach (var c in constructorInfo)
string constructorName = c.N
ParameterInfo[] constructorParams = c.GetParameters();
Console.WriteLine("constructorName------&" + constructorName);
foreach (var p in constructorParams)
Console.WriteLine("Params------ p.Name--&" + p.Name);
Console.WriteLine("Params------ p.Type---&"+ p.ParameterType);
Console.WriteLine("-------------------------------------------------------------------");
public怎么够? 获取受保护的成员信息
现在获取私有属性的请问激动不激动,按耐住,完全出乎你的意料,只需要改动一句代码就好了,
以GetFields为例:
1.获取public修饰
FieldInfo[]
fieldInfos = type.GetFields();
2.获取private 和protected的值
//获取全部类型的值
FieldInfo[] fieldInfos = type.GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);
看我们使用第二个方法得到的字段信息是怎样的呢,打印出来看看:
哈哈,很明显,我们获取了所有的字段,连属性默认创建的隐藏字段都打印出来了,看来获取的方式是正确的.剩下的Method,Member等就不贴图了,说实话,这个图黑底白字看着好刺眼,贴的还心塞,大家下去可以打印看看,会发现很多你想不到的方法哟~~
好了,回归主题,注意观察,我们用的是同一个方法名,只是传递的是参数不同,是不同的方法重写而已,如下:
public FieldInfo[] GetFields();
public abstract FieldInfo[] GetFields(BindingFlags bindingAttr);
很晚了,回去睡觉了,这周有时间,会专门抽时间看一下关于BindFlags的具体使用.因为我试的时候发现必须要加上BindFlags.Instance参数,否则就获取不到,强迫症一定要知道是为什么,找到答案后会写篇博客的.
晚安,csdn,晚安,大家,晚安,自己^_^
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:71001次
积分:1382
积分:1382
排名:千里之外
原创:61篇
评论:43条
(4)(2)(1)(9)(6)(4)(3)(7)(12)(6)(4)(4)(3)

我要回帖

更多关于 微信上钱被盗了怎么办 的文章

 

随机推荐