gpt4 book ai didi

c# - `Assembly.GetType(name)` 什么时候返回 `null` ?

转载 作者:太空狗 更新时间:2023-10-29 21:35:53 39 4
gpt4 key购买 nike

我有如下所示的代码

public static Type ToType(Type sType)
{
Assembly assembly = Assembly.Load(SerializableType.AssemblyName);
type = assembly.GetType(sType.Name);
}

更新

在 UI 中,如果我为基类设置值没有问题,因为它们的程序集创建正常方式,但如果您为用户定义的类设置值,它们的程序集创建不同的方式,如下所示

最佳答案

如果找不到类名,它返回 null,很可能是因为您的类型的 Name 属性只返回类型名称,而不是限定的命名空间名称它。确保您的 Name 属性也包括限定它的命名空间。

根据 MSDN 上的 Assembly.GetType(string name),它返回:

An object that represents the specified class, or Nothing if the class is not found.

因此,由于您得到的是 null,它无法找到类型名称,最可能的原因是拼写错误,或者您没有在类型名称前加上命名空间。

This method only searches the current assembly instance. The name parameter includes the namespace but not the assembly.

或者,也有可能类型名称的大小写错误,GetType() 的一个版本支持不区分大小写的名称的 bool 参数也比较一下。

附注命名空间是必需的,因为程序集名称可能不是命名空间的指示符。也就是说,如果我在程序集 MySystem.MyClasses.DLL 中有一个类型,这并不意味着该类型一定在 MySystem.MyClasses 命名空间中。

完整的 MSDN 页面(总是很高兴看到抛出/返回的东西)在这里:Assembly.GetType Method(String)

很明显程序集存在(否则它会返回 null 并且您会得到一个 NullReferenceException),所以另一种可能性是您没有相同版本的您期望的程序集(即使用此代码的程序与生成数据的代码具有不同版本的程序集)。

关于c# - `Assembly.GetType(name)` 什么时候返回 `null` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8141190/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com