我知道有一些关于Type.GetType()rerain null的帖子,但我的问题是,我有.dll模块并在用c#编写的桌面版本中使用它。此模块从xml加载配置,反序列化它并返回我填充的对象。在桌面版上,它正常工作。
现在想将它添加到我们在.NET Core上运行的API中。所以我使用相同的.dll文件并使用与桌面上相同的方法加载。
在XML中,我们还存储程序集限定名称(namespace.class,assembly,version,culture,publickeyToken)。在桌面版本上,我们在版本1.2.3.4中创建配置,而不是对此.dll进行一些更改,将版本更改为1.2.3.5,我们仍然可以加载配置。但是,如果尝试在API中执行相同的操作,我无法做到这一点,只有在XML与当前程序集版本相同的版本中。无法使用较低版本加载配置。
我在这一行发现了问题,其中typeArgumentName是程序集限定名称。
Type.GetType(typeArgumentName)
如果我使用桌面应用程序调试此代码,它可以正常工作。如果使用API调试它并将typeArgumenName版本更改为当前.dll版本,则可以正常工作。如果不更改它,则返回null。
我的问题是,为什么它正在处理桌面版本并返回正确的类型以及为什么它在使用API时返回null。
答案 0 :(得分:0)
由于使用了不兼容的C#库,可能会发生这种情况。我的意思是,如果您将桌面应用程序库用于您的Web API项目,那么它可能会发生,因为有时Web版本无法识别桌面dll。