//User Table
class User
{
private int _id; //ID
private string _name; //姓名
public int ID{ get => _id; set => _id = value; }
public string Name { get => _name; set => _name = value; }
}
//Department Table
class Department
{
private int _id;
private string _name;
public int Id { get => _id; set => _id = value; }
public string Name { get => _name; set => _name = value; }
}
//User操縱接口
interface IUser
{
void Insert(User user);
User GetUser(int id);
}
//用於操縱Access中的User表
class AccessUser : IUser
{
public User GetUser(int id)
{
Console.WriteLine("在Access中根據ID得到User表一條記錄");
return null;
}
public void Insert(User user)
{
Console.WriteLine("在Access中給User表增加一條記錄");
}
}
//用於操縱Sql Server中的User表
class SqlserverUser:IUser
{
public void Insert(User user)
{
Console.WriteLine("在SQL Server中給User表增加一條記錄");
}
public User GetUser(int id)
{
Console.WriteLine("在SQL Server中根據ID得到User表一條記錄");
return null;
}
}
//Department操縱接口
interface IDepartment
{
void Insert(Department department);
Department GetDepartment(int id);
}
//用於操縱Access Server中的Department表
class AccessDepartment : IDepartment
{
public Department GetDepartment(int id)
{
Console.WriteLine("在Access數據庫中根據id獲取一條Department數據");
return null;
}
public void Insert(Department department)
{
Console.WriteLine("在Access數據庫中插入一條Department數據");
}
}
//用於操縱Sql Server中的Department表
class SqlserverDepartment : IDepartment
{
public Department GetDepartment(int id)
{
Console.WriteLine("在SqlServer中根據id獲取部門");
return null;
}
public void Insert(Department department)
{
Console.WriteLine("在SqlServer中插入一條department數據");
}
}
using System.Reflection;
using System.Configuration;
//反射
class DataAccess
{
private static readonly string AssemblyName = "Test";
private static readonly string db = ConfigurationSettings.AppSettings["DB"];
public static IUser CreateUser()
{
string className = AssemblyName + "." + db + "User";
return (IUser)Assembly.Load(AssemblyName).CreateInstance(className);
}
public static IDepartment CreateDepartment()
{
string className = AssemblyName + "." + db + "Department";
return (IDepartment)Assembly.Load(AssemblyName).CreateInstance(className);
}
App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<appSettings>
<add key="DB" value="Access"/>
</appSettings>
</configuration>
class Program
{
static void Main(string[] args)
{
//新數據
User user = new User();
Department department = new Department();
IUser u = DataAccess.CreateUser();
u.Insert(user);
u.GetUser(1);
IDepartment d = DataAccess.CreateDepartment();
d.Insert(department);
d.GetDepartment(1);
}
}