无法从程序集加载类型

3
为了避免重复代码,我写了一个方法,传入一个字符串(ClassNameString)作为参数,并用它生成两个东西,一个是WebClient的URL,另一个是名字为该字符串值的Class。
第1个目的可以毫无问题地完成,但第2个目的让我很困扰,我写了下面的代码。
Type targetRawDataClassType = Type.GetType( ClassNameString, true );

但代码执行失败了,显示“无法从程序集'ABCDEFG, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'中加载类型为'ClassNameString'的内容。”

如何解决这个问题呢?

1个回答

9

看起来很奇怪。

我解决了这个问题,只要在使用GetType时引用完整的命名空间。 似乎即使我一开始使用“using XXXXX”引用了命名空间,也不起作用。我应该在运行时引用它。

以下代码解决了这个问题:

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

2
如果您的问题已经得到解答(由您自己),请将其标记为答案。 - cvraman
1
不确定您实际上是如何获取命名空间和类字符串的,但如果您在之前的过程中从 Type 中获取它们,您可以调用 Type.FullName,它将以单个字符串返回命名空间和类。 - TyCobb
@TyCobb 当 Type 声明未完成时,Type.FullName 只能被引用。但是我的先前代码无法运行,因此我无法通过它来引用它。就像上面的代码一样,我不引用 NameSpaceString,而是将实际的命名空间作为字符串 "xxxxxx" 输入并与 ClassNameString 连接,这样我就可以修复错误了。 - Albert Gao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接