Assembly.GetType
时间: 2023-10-02 12:04:25 浏览: 86
Assembly.GetType 方法是在指定程序集中查找指定类型的方法。该方法有多个重载形式,其中最常用的是传递一个字符串参数,用于指定类型的名称。例如,如果您想获取程序集中名为 "MyNamespace.MyClass" 的类型,可以使用以下代码:
```
Assembly assembly = Assembly.Load("程序集名称");
Type type = assembly.GetType("MyNamespace.MyClass");
```
如果您已经有了类型的 Type 对象,也可以使用 Assembly.GetType 方法获取该类型所在的程序集。例如,如果您已经有了 MyClass 类型的 Type 对象,可以使用以下代码获取该类型所在的程序集:
```
Assembly assembly = Assembly.GetAssembly(typeof(MyClass));
```
需要注意的是,Assembly.GetType 方法只能查找指定程序集中已经加载的类型。如果要获取未加载的类型,需要使用 Assembly.Load 方法加载程序集。同时,需要确保在使用 Assembly.GetType 方法之前已经加载了指定程序集。
相关问题
Assembly.GetType获取为空
`Assembly.GetType`在某些情况下可能会返回null,特别是在尝试跨程序集反射(Reflection across assemblies)时[^1]。这是因为`Type.GetType`是基于字符串完全限定名查找类型,如果指定的类型位于另一个程序集中而当前程序集尚未加载该类型所在的程序集,那么它就会返回null。
要解决这个问题,你可以按照以下步骤操作:
1. **先加载所需程序集**:
```csharp
Assembly targetAssembly = Assembly.Load("YourAssemblyName");
```
这里替换 "YourAssemblyName" 为你想要加载的程序集的名称。
2. **使用`Assembly.GetType`获取类型**:
```csharp
Type desiredType = targetAssembly.GetType("EnterpriseServerBase.DataAccess.IDBAccesser");
```
这样就可以确保你正在尝试获取的类型是在已经加载的程序集中找到的,从而避免`GetType`返回null。
Assembly assembly = Assembly.Load(assemblyName); Type type = assembly.GetType(className);是什么意思
这段代码的作用是使用反射来动态加载一个名为 `assemblyName` 的程序集,并获取该程序集中的一个名为 `className` 的类型的 `Type` 对象。
首先,`Assembly.Load(assemblyName)` 方法会根据程序集名称来加载程序集,并返回一个 `Assembly` 对象,该对象代表了该程序集。
然后,`assembly.GetType(className)` 方法会从该程序集中获取一个名为 `className` 的类型,并返回一个 `Type` 对象,该对象代表了该类型。
通过这两个操作,我们可以在运行时动态地获取程序集中的类型,并进行操作。例如,我们可以使用 `Activator.CreateInstance(type)` 方法来创建该类型的实例,并调用其方法、设置其属性等。
阅读全文