C#中有一種應用場景,就是根據供應商、服務商、平臺等的不同,可以封裝不同的類庫,但是這些類庫都實現同一套接口;
然後在配置文件或者數據庫中配置,根據供應商、服務商、平臺不同,動態的加載對應的dll,然後創建對象,調用方法;提高系統的擴展性。
示例代碼:
// See https://aka.ms/new-console-template for more information
using System.Reflection;
using HotelPlatform;
internal class Program
{
private static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
Assembly assembly = Assembly.Load("HotelPlatform");
string className = "HotelPlatform.Order";
Type type = assembly.GetType(className);
//Order o = new Order();
//o.InsertOrder();
if (type != null)
{
object instance = Activator.CreateInstance(type);
string methodName = "InsertOrder";
MethodInfo methodInfo = instance.GetType().GetMethod(methodName);
if (methodInfo != null)
{
methodInfo.Invoke(instance, null);
}
}
}
}