2010-12-02 19 views
6

我有兩個程序集A和B.A是強命名的,B不是。爲什麼有可能使用反射從已簽名的程序集中加載未簽名程序集中的類型?

根據MSDN我無法從A引用B,因爲強命名程序集只能引用另一個強命名程序集。

但是爲什麼有可能加載程序集B,實例化它的類並使用反射從程序集A中調用它們的方法?

// Inside assembly A 
Assembly b = Assembly.LoadFrom("B"); 
obj myObj = b.CreateInstance("MyClass"); 

這是否違背了不允許引用未簽名程序集的目的?

+2

你試過了嗎? – 2010-12-02 13:10:44

+0

@Logan - 我已經更新了這個問題 – 2011-03-18 08:38:45

回答

8

那麼,你必須明白,強命名的程序集旨在規避「DLL地獄」,並允許「並排版本化」。 AFAIK它不是爲了安全而設計的。

因此,您可以在強命名程序集中使用反射來調用方法並實例化未簽名程序集中的類。該框架假設你知道你在做什麼,因爲你明確地加載了一個文件 - 所以你應該知道你真正想要哪個文件。換句話說,你是在告訴框架:「對於這個彙編,我想管理我自己的版本。」

相關問題