2010-12-17 84 views

回答

2
Assembly assembly = Assembly.LoadFile("assemblyAddress"); 

bool containClass = assembly.GetTypes().Where(x=>x.Name == "ClassName").Count() > 0; 

bool containmethod = assembly.GetTypes().Where(
    x => x.GetMethods().Count(p => p.Name == "MethodName") > 0).Count() > 0; 
+0

@David Lively,謝謝 – 2010-12-17 18:19:33

+0

這段代碼可以用來檢查運行時是否需要編譯。我對嗎? – 2010-12-18 13:55:37

+0

@PeachLabs,它可以在運行時使用,我不知道你在編譯時說什麼,運行前每個代碼都需要編譯。 – 2010-12-18 14:06:45

2

這樣的函數是不相關的,因爲C#是一種靜態語言。
如果這個類不存在,你會得到一個編譯時間錯誤。

您可能正在尋找反思。

+0

我正在嘗試開發像wordpress這樣的插件框架,以便儘可能獲得最佳解決方案。 – 2010-12-18 13:56:44

0

這類事情不會從解釋和動態類型的世界轉化爲大量編譯和強類型的.NET世界。也就是說,還有其他方法可以實現,也許你可能想重申一下顯示你想創建什麼效果的問題。

0

C#中的所有函數都必須存在於一個類中,因此第一個示例不適用於全局函數的上下文中。

對於一類的情況下,你會知道在編譯的時候,如果它存在:

MyClass x = new MyClass(); 

會如果沒有定義MyClass在編譯時返回。

如果你想獲得屬於MyClass的方法列表,你可以使用Reflection