本文轉自: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)傳給該類,即可動態為應用程式選擇不同的資料庫。
此樣本在實際開發中應用比較多,所以應該進行深入的學習。