ric*_*tin 6 .net c# reflection .net-assembly
我有一个如下所示的代码
public static Type ToType(Type sType)
{
Assembly assembly = Assembly.Load(SerializableType.AssemblyName);
type = assembly.GetType(sType.Name);
}
Run Code Online (Sandbox Code Playgroud)
UPDATE
在UI中,如果我为基类设置值没有问题,因为它们的程序集创建正常方式,但如果为用户定义的类设置值,则它们的程序集创建不同的方式,如下所示
null
如果找不到类名,则返回,很可能是因为Name
类型的属性只返回类型名称,而不是命名空间名称来限定它.确保您的Name
属性包含符合条件的命名空间.
根据Assembly.GetType(字符串名称)上的MSDN,它返回:
表示指定类的对象,如果未找到该类,则为Nothing.
因此,既然你得到null
它,它找不到类型名称,最可能的原因是它拼写错误,或者你没有在命名空间前加上类型名称.
此方法仅搜索当前程序集实例.name参数包括命名空间,但不包括程序集.
或者,类型名称的情况也可能是错误的,有一个版本GetType()
支持bool
不区分大小写的名称比较的参数.
ps需要名称空间,因为程序集名称可能不是命名空间的指示符.也就是说,如果我在程序集中有一个类型MySystem.MyClasses.DLL
,这并不意味着该类型必须在MySystem.MyClasses
命名空间中.
这里有完整的MSDN页面(总是很好看看抛出/返回的内容):Assembly.GetType Method(String)
显然程序集存在(或者它会返回null
并且你会得到一个NullReferenceException
),所以另一种可能性是你没有你期望的程序集的相同版本(即使用此代码的程序具有不同版本的程序集然后生成数据的代码).
归档时间: |
|
查看次数: |
5937 次 |
最近记录: |