2013-05-12 25 views
2

加載類型以避免重複的代碼,我寫了一個方法,我將一個字符串(ClassNameString)作爲參數傳入,並使用它來生成2件事,一個是WebClient的url,並且一個是名稱是字符串值的類。無法從程序集

第一個目的可以沒有問題地完成,但第二個目標真的困擾我,我寫了下面的代碼。

Type targetRawDataClassType = Type.GetType(ClassNameString, true); 

但碼falis,它表示 「無法從組件加載類型 'ClassNameString' 'ABCDEFG,版本= 1.0.0.0,文化=中性公鑰=空'」。

如何解決?

回答

5

這似乎很奇怪。

我在做GetType時通過引用完整的命名空間來解決問題。 看來,即使我首先使用「使用XXXXX」來引用命名空間,但它不起作用。我應該在運行時參考它。

這個問題已經通過下面的代碼得到解決:

Type targetRawDataClassType = Type.GetType(
           NameSpaceString + 
           ClassNameString, 
           true); 
+2

如果您的問題已經回答了(通過你的自我),將其標記爲答案。 – cvraman 2013-05-12 15:53:27

+1

不知道你是如何得到你的命名空間和類字符串的,但是如果你在前面的過程中從Type獲得它們,你可以調用Type.FullName,它將以單個字符串返回你的命名空間和類。 – TyCobb 2013-05-12 15:53:41

+0

@TyCobb Type.FullName只能在Type聲明完成時才能引用。但我以前的代碼無法運行,所以我無法通過它來引用它。作爲上面的代碼,我沒有引用NameSpaceString,我只是將實際的namesapce鍵入爲字符串「xxxxxx」,並將其與ClassNameString一起加入,所以我可以修復該錯誤。 – 2013-05-12 16:06:38