0
我正試圖從一個DLL中加載所有實現接口的類型。我希望能夠從DLL中獲取類型,創建每種類型的實例,然後將每種類型視爲實現接口。我已經寫了一個基本的例子,下面是我想要實現的。我可以將對象視爲實現反射界面嗎?
感謝您的幫助
class Program
{
private static List<IJob> _jobs;
static void Main(string[] args)
{
LoadJobs();
foreach (var job in _jobs)
{
job.Run();
}
Console.ReadKey();
}
static void LoadJobs()
{
_jobs = new List<IJob>();
var jobsPath = Directory.GetFiles(@"C:\Jobs\");
foreach (var file in jobsPath)
{
var assembly = Assembly.LoadFrom(file);
foreach (var type in assembly.GetExportedTypes())
{
var instance = Activator.CreateInstance(type);
var job = instance as IJob;
if(job != null)
_jobs.Add(job);
}
}
}
}
你混合兩個概念。 'type'是一個'Type',你將其作爲實例處理。 'IJob'類型永遠不會是真的。 –
如果你想檢查一個*類型是否實現了接口*你可以這樣做:'type.GetInterfaces()。Contains(typeof(IJob))' –
對不起,我打算在發佈之前添加實例。我不知道這是否仍然可行。 – DanMarionette