网站风格: 红 | 蓝
搜索:  全站?
首页 |  Java开发 |  DOTNET开发 |  PHP开发 |  ASP技术 |  Web开发 |  数据库应用 |  网络文摘 |  作品集 |  下载 |  留言
文章聚合
  J2EE  |   框架技术  |   Javascript  |   AJAX  |   J2ee Server  |   J2ME  |
  WinForm开发  |   Asp.net  |   C#语言  |   服务器  |   第三方控件  |
  PHP笔记  |   Linux  |   第三方代码  |
  ASP教程  |   ASP实用代码  |   ASP笔记  |   服务器  |
  CSS样式表  |   Photoshop设计  |   Flash  |   HTML 小技巧  |   Dreamweaver  |   XML技术  |
  SQL Server  |   Oracle  |   MySQL  |
  散文  |   幽默  |   杂文  |
  Web 项目  |   杂七杂八  |
  第三方代码  |   实用工具  |   作品下载  |   帮助文档  |
奇点网 - DOTNET开发 - C#语言 - 反射机制
反射机制
来源:http://www.7dit.com     作者:7dit     发布日期:2008-09-21 01:34:32   点击量:467
关于反射,我的理解是:主要通过反射,了解已编译的程序集中的结构,从而进行分析和使用。

命名空间:System.Reflection;

Assembly是反射的主要工具,通过调用他的方法和子方法,我们可以得到程序集中的类,类名,接口,类中的公有属性,公有方法,等一系列信息。

使用案例


public bool ModifyRoom(Room room) //该方法主要将一个实体对象进行更新
{
List<string> sqlList = new List<string>();
try
{
DBConn.oleConn.Open();
Type t = Assembly.LoadFile(Application.StartupPath + @"\HotelManagerModels.dll").GetType("HotelManagerModels.Room"); //通过dll文件反射回程序集中的所有类,通过GetType取得我们所需要的某个命名空间下的类
PropertyInfo[] pList = t.GetProperties(); //获取所有属性
foreach (PropertyInfo p in pList)
{
if (p.Name != "RoomID")
{
string sql = string.Format("update Room set {0} = '{1}' where RoomID = {2}", p.Name, p.GetValue(room, null),room.RoomID); //通过遍历自动实体对象的每个属性生成SQL语名

sqlList.Add(sql);
}
}
int count = sqlList.Count;
foreach (string sql in sqlList) //遍历执行所有的SQL语名, 当我们无法使用存储过程或事务进行操作时,可以偿试用遍历的方式自动提交
{
OleDbCommand oc = new OleDbCommand(sql, DBConn.oleConn);
count -= oc.ExecuteNonQuery();
oc.Dispose();
}
if (count == 0)
{
return true;
}
else
{
return false;
}
}
catch (Exception)
{
return false;
}
finally
{
if (DBConn.oleConn != null && DBConn.oleConn.State == ConnectionState.Open)
{
DBConn.oleConn.Close();
}
}
}



另一种使用:
ssembly.LoadFile(filePath).GetName().Version.ToString(); //可以得到该程序集的版本,通过对比版本,我们可以实现软件版本的自动更新。
标签:   C#  |  DOTNET  |  代码  |
留言 | 链接 | 标签 | 风格: 红 蓝   
Copyright © 2005 奇点中文网--7dit.com
闽ICP备05001292号