foreach (var item in System.Reflection.Assembly.GetEntryAssembly().GetTypes()) { if (typeof(ICaijiSiteBase).IsAssignableFrom(item) && !item.IsAbstract) { var constructors = item.GetConstructors(); foreach (var constructor in constructors) { var parameters = constructor.GetParameters(); if (parameters.Length == 0) { var siteInstance = constructor.Invoke(null) as ICaijiSiteBase; if (siteInstance != null) { site = siteInstance; break; } } } } } site还是返回null
时间: 2024-02-10 11:33:28 浏览: 163
Parallel.ForEach的卡死现象(线程操作问题C#源码实例)
这段代码的作用是通过反射获取程序集中实现了 `ICaijiSiteBase` 接口的非抽象类,并创建该类的实例。如果该类的构造函数不带任何参数,则通过反射创建实例并返回。
如果 `site` 返回 null,可能有以下几种原因:
1. 程序集中没有实现 `ICaijiSiteBase` 接口的非抽象类。可以检查程序集中是否存在这样的类,并且这些类是否正确地实现了 `ICaijiSiteBase` 接口。
2. 所有实现 `ICaijiSiteBase` 接口的类的构造函数都带有参数。在这种情况下,程序无法创建实例并返回 null。
3. 所有实现 `ICaijiSiteBase` 接口的类的构造函数都抛出异常,导致程序无法创建实例并返回 null。可以检查这些类的构造函数是否存在异常,并进行修复。
阅读全文