我使用CSharpCodeProvider
編譯程序集,並且我將CompileParameters
GenerateInMemory
屬性設置爲true
,因爲我不想創建物理文件。將InMemory編譯程序集加載到當前域
編譯後,我可以採取CompilerResults
,做這樣的事情 -
object x = cr.CompiledAssembly.CreateInstance("MyGeneratedClass");
Console.WriteLine(x);
我得到預期的輸出,該CreateInstance
工作過。
但是,我需要能夠訪問當前AppDomain
中的類型,而不必知道程序集。我需要做這樣的事情: -
Type t = Type.GetType("MyGeneratedClass");
object x = Activator.CreateInstance(t);
問題是在這個代碼t
結束爲空。現在我懷疑,雖然程序集已經編譯過,但沒有加載。我似乎無法找到將此程序集加載到域中,以便可以解析其類型名稱。
任何人都可以啓發我嗎?
選擇此作爲答案,因爲它使我找到正確的解決方案。 GetType中的名稱需要使用程序集名稱來定製,程序集名稱可以在CompileParameters中定義。 – AnthonyWJones 2011-03-21 13:07:38
@AnthonyWJones:酷!很高興我能幫上忙。 :-) – 2011-03-21 15:03:19