簡體   English   中英

C#將匯編類轉換為類型

[英]C# cast assembly class to type

有什么方法可以將類從外部(托管)程序集強制轉換為特定接口?

我的意思是不要調用MethodInfo.Invoke(instance, parameters); ,做這樣的事情

Assembly assembly = Assembly.LoadFrom(assemblyName);
System.Type type = assembly.GetType(typeName);
Object o = Activator.CreateInstance(type);
IYourType yourObj = (o as IYourType);

更新

我有一個具有已知接口的外部程序集,是的,我在程序集中引用了該程序集的本地副本。 檢查顯示o為assembly.GetType(typeName);類型。

好的,我認為我們終於有足夠的信息來回答這個問題。

問題是您已經創建了反射類使用的該接口的本地副本。

這只是行不通,Jitter對兩個接口的了解都足夠多,以至於它們都不相同,它返回null。

接口是2個實體之間的合同。 您實際上要嘗試做的就是欺騙.Net,以為它具有相同的合同,總之不會被欺騙。

由於沒有必要從組件反映接口(因為您在設計時不能使用它)。 唯一可用的選項是在兩個程序集之間共享該接口。 這就是插件系統的工作方式。 他們彼此之間足夠了解,可以通過接口進行通信。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM