本文转自:http://renhappy20066.blog.163.com/blog/static/1120807862010220104129204/
示例一.
利用反射机制获取当前的程序集
首先,引入命名空间using System.Reflection;
在测试类中进行测试,示例代码如下:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//得到当前程序集
Assembly assembly = Assembly.GetExecutingAssembly();
//Console.WriteLine(assembly.GetName().ToString());
//获得所有的类信息
foreach (MemberInfo info in assembly.GetTypes())
{
Console.WriteLine(info.ToString());
Console.ReadKey();
}
}
}
}
示例二.
利用反射机制动态的加载不同类型的数据库
分别以SQL Server和Oracle为例
首先,引入两个命名空间,using System.Reflection;和using System.Configuration;(配置文件的命名空间
)
其次,创建User.cs
示例代码:
public class User
{
int _id;
public int Id
{
get { return _id; }
set { _id = value; }
}
string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
}
创建SQL Server的实现类(只是模拟实现,数据库连接并无真正实现,主要是用来演示反射机制的)
SqlService.cs
示例代码:
public class SqlService
{
public static int InserUser(User user)
{
return 1;
}
}
创建Oracle的实现类
Oracle.cs
示例代码:
class OracleService
{
public static int InserUser(User user)
{
return 0;
}
}
创建数据库选择类(用来实现动态的选择数据库):
ChooseDB.cs
示例代码:
class ChooseDB
{
public static int ChooseService()
{
int result = 0;
string type =
ConfigurationManager.AppSettings["type"];
User user=new User();
switch (type)
{
case "Sql":
result= SqlService.InserUser(user);
break;
case"Oracle":
result=AccessService.InserUser(user);
break;
}
return result;
}
}
接着,配置App.config文件
示例代码:
App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="type" value="Oracle"/>
</appSettings>
</configuration>
最后,在主程序中进行测试,
示例代码:
class Program
{
static void Main(string[] args)
{
Console.WriteLine(ChooseDB.ChooseService().ToString());
Console.ReadKey();
}
}
此示例主要是为了演示c#中的反射机制,只需修改App.config文件中的value的值,而在选择数据库类之中,将
键(key)传给该类,即可动态的为应用程序选择不同的数据库。
此示例在实际开发中应用比较多,所以应该进行深入的学习。