2014-05-15 44 views
0

我有庫TestProject1。命名空間 - TestProject1。 這裏我有課 - Class1。 我可以使用完整的類名稱(TestProject1.Class1)從另一個項目加載它嗎? (dll在另一個項目的文件夾中)。 我想看看解決方案,而不會拋出文件夾中的所有「* .dll」文件。從全類型名稱加載程序集

只有動態負載。

+0

檢查此帖:http://stackoverflow.com/questions/465488/can-i-load-a-net-assembly-at-runtime-and-instantiate-a-type-knowing-only-the-na它包括動態加載和類型激活/構建。 – Stefan

回答

1

是的,因爲你有這樣做的另一個組件項目中的引用,您可以創建一個從類型Assembly對象並獲取這種類型的一些性質,樣品:

Assembly asm = Assembly.GetAssembly(typeof(Class1)); 

string fullName = asm.FullName; 

如果您需要加載不被引用到您的項目組件,您可以使用Assembly.LoadFile方法,通過DLL的路徑,樣品:

var asm = System.Reflection.Assembly.LoadFile("C:\\project.dll"); 

// Get the type to use. 
Type class1 = asm.GetType("Class1"); 

// Get the method to call. 
MethodInfo myMethod = class1.GetMethod("MethodA"); 

// Create an instance. 
object obj = Activator.CreateInstance(class1); 

而且隨着asm裝配對象的工作,你會不會有一個強類型的代碼,但你可以使用Reflection使用此程序集中的類型。

請記住,包括反射命名空間:

using System.Reflection; 
+0

我不瞭解Class1作爲類。我只知道它的名字。班級正在另一個項目中。 –

+0

Class1位於dll中,位於我的主應用程序文件夾中 –

+0

查看我的編輯,您可以使用'Assembly.LoadFile()'。 –

0

埃姆,我自己的答案是使用

Assembly.LoadWithPatrialName("TestProject1.Class1"); 

是嗎?

相關問題