我有庫TestProject1。命名空間 - TestProject1。 這裏我有課 - Class1。 我可以使用完整的類名稱(TestProject1.Class1)從另一個項目加載它嗎? (dll在另一個項目的文件夾中)。 我想看看解決方案,而不會拋出文件夾中的所有「* .dll」文件。從全類型名稱加載程序集
只有動態負載。
我有庫TestProject1。命名空間 - TestProject1。 這裏我有課 - Class1。 我可以使用完整的類名稱(TestProject1.Class1)從另一個項目加載它嗎? (dll在另一個項目的文件夾中)。 我想看看解決方案,而不會拋出文件夾中的所有「* .dll」文件。從全類型名稱加載程序集
只有動態負載。
是的,因爲你有這樣做的另一個組件項目中的引用,您可以創建一個從類型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;
我不瞭解Class1作爲類。我只知道它的名字。班級正在另一個項目中。 –
Class1位於dll中,位於我的主應用程序文件夾中 –
查看我的編輯,您可以使用'Assembly.LoadFile()'。 –
埃姆,我自己的答案是使用
Assembly.LoadWithPatrialName("TestProject1.Class1");
是嗎?
檢查此帖:http://stackoverflow.com/questions/465488/can-i-load-a-net-assembly-at-runtime-and-instantiate-a-type-knowing-only-the-na它包括動態加載和類型激活/構建。 – Stefan