2010-07-19 61 views
1

當我使用檢查程序中引用的「基本」類型時,檢查子類(抽象 - >派生)類型時看到不同的行爲當我明確加載檢查程序中的「基本」類型。對於引用類型和加載類型,IsSubClassOf的不同行爲

所以,如果我這樣做,我主要檢查程序,在引用(基本類型)的基本類型:

  1. 裝入derivType爲Assembly.ReflectionOnlyLoadFrom(Path_to_deriv_dll) - > typeToLoad
  2. VAR BASETYPE = typeof運算(abstract_class)//大會abstract_class在
  3. typeToLoad.IsSubClassOf(基本類型)被引用產生假

但是,如果我這樣做:

  1. 裝入鹼基類型爲Assembly.ReflectionOnlyLoadFrom(Path_to_base_type_dll) - >鹼基類型
  2. 裝入derivType如Assembly.ReflectionOnlyLoadFrom(Path_to_deriv_dll) - > typeToLoad
  3. 檢查typeToLoad.IsSubClassOf(鹼基類型),它產生作爲真

任何想法都不勝感激。

回答

1

你的情況的原因是該類型有不同的身份。當使用LoadFrom時,程序集將加載到LoadFrom上下文中,並與加載到Load上下文中的引用加載。由於程序集加載到不同的上下文中,程序集中的類型具有不同的標識。

這裏有更多的一些信息關於這個問題 http://blogs.msdn.com/b/suzcook/archive/0001/01/01/57248.aspx http://blogs.msdn.com/b/suzcook/archive/2003/05/29/57143.aspx

+0

我檢查的鏈接,但仍這不是很清楚的一些鏈接。無論如何,我設法將插件DLL複製到「Loader」bin文件夾,然後從那裏加載所有內容,現在它可以工作。 – Sunit 2010-07-19 19:22:55

0

確保第一個選項中引用的程序集版本與第二個選項中動態加載的程序集版本相同。如果你在兩種情況下(相同版本等)加載相同的精確彙編,你應該得到相同的答案。

但是,如果您正在引用不同版本的程序集,則可能會得到不同的答案。

相關問題