[英]Using dynamic in C# without referencing a DLL
我想在C#中使用動態與外部API(DLL)中定義的對象進行交互。 這樣,我不想在控制台應用程序中引用該API。 這可行嗎?
例如,我使用以下內容:
dynamic obj1 = new ObjectDefinedInAPI();
編譯器一直在that
The type or namespace name 'objectDefinedInAPI' could not be found ...
任何想法?
謝謝
您可以手動加載程序集,然后在知道了程序集名稱和類名的情況下創建一個類的實例。
var assembly = Assembly.LoadFrom("filepath");
var aClass = assembly.GetType("NameSpace.AClass");
dynamic instance = Activator.CreateInstance(aClass);
除了NeutronCode答案,您還可以嘗試以下方法:
public interface IDynamicService {
void DoSomething();
}
public void static main() {
var assembly = Assembly.LoadFrom("filepath");
var aClass = assembly.GetType("NameSpace.AClass");
IDynamicService instance = Activator.CreateInstance(aClass) as IDynamicService;
if (instance != null) {
instance.DoSomething();
}
}
這樣,您可以確保您的類型具有特定的實現。 請注意,實際的類必須繼承該接口才能正常工作,因此,如果您無權訪問其他dll源代碼,則無濟於事。 這樣做的好處是您將獲得Intellisense,並將始終確保動態類與應用程序良好地接口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.