2010-04-14 46 views
1

幫助類,這裏的理念是:呼叫Activator.CreateInstance到intance駐留Asp.Net App_Code文件內

External.dll 
IMyClass NewCreated = (IMyClass)Activator.CreateInstance(Namespace.MyClass).UnWrap(); 

----------------------------------------- 

Asp.Net WebSite 
    App_Code 
     Namespace.MyClass.cs 
    Bin 
     External.dll 

是,即使更多鈔票?

我都試過了,很多更多鈔票的組合,如:

Assembly.GetCallingAssembly().CreateInstance("Namespace.MyClass") 
Activator.CreateInstance(AppDomain.CurrentDomain,"Namespace","Namespace.MyClass") 
Assembly.GetExecutingAssembly().CreateInstance("Namespace.MyClass") 

回答

1

可以使用BuildManager.CodeAssemblies屬性列出已在App_Code目錄被編譯的所有程序集名稱。你可能能夠以這種方式完成你需要的東西。

與App_Code的問題是,一切都被動態編譯爲本質上是臨時的程序集。這帶有一個臨時的程序集名稱。這使硬編碼程序集名稱或路徑成爲不可能。

+0

非常感謝,下面是從dll中初始化app_code中任何類的完整代碼。 ((Assembly)BuildManager.CodeAssemblies [0])。GetType(「Namespace.Class」),ConstructorParams1,ConstructorParams2); – Fraga 2010-04-15 16:32:13

0

不需要使用BuildManager.CodeAssemblies屬性列出所有程序集名稱。而是使用:

type =「Namespace.MyClass,App_Code」引用該類。