簡體   English   中英

在C#中使用動態而不引用DLL

[英]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.

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