求問下各位大佬,現在我有個需求是,某個專案未來會用于好幾個產品,所以想通過config檔案替換不同的dll名稱和類名,來呼叫各種產品需要的獨特的函式,來避免修改整個程式。
因為類名也不是固定的,所以想轉換成介面來使用。但是實際用起來總是報錯。
想請教一下是為什么報錯?以及怎么修改能實作這個需求? 下面是簡化的例子

DLL示例
namespace DemoDll
{
public class Product1:IProduct
{
public string name { get => "產品名"; }
public string GetInfo()
{
//從資料庫獲取產品資訊
return "產品資訊...";
}
public void PrintInfo()
{
//呼叫列印機
}
}
}
介面示例
public interface IProduct
{
string name { get; }
string GetInfo();
void PrintInfo();
}
主程式示例
private void Main()
{
//DemoDll的絕對路徑
string dll_path = ConfigurationManager.AppSettings["path"];
//類的完全限定名,DemoDll.Product1
string class_name = ConfigurationManager.AppSettings["class"];
Assembly assmbly = Assembly.LoadFrom(dll_path);
IProduct product = (IProduct)assmbly.CreateInstance(class_name);
//使用該介面型別作為引數的函式
CheckProduct(product);
}
uj5u.com熱心網友回復:
IProduct 介面上面改為 namespace DemoInterfaceuj5u.com熱心網友回復:
IProduct介面所在的namespace本來就是DemoInterface呀
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/276506.html
標籤:C#
上一篇:一個極簡單的MVC提交表單的頁面,怎么搞不定?求助。
下一篇:交叉報表用什么工具做比較合適
