foreach (var item in System.Reflection.Assembly.GetEntryAssembly().GetTypes()) { if (item.GetInterface(typeof(ICaijiSiteBase).Name) != null) { var configurationInstance = Activator.CreateInstance(item); site = Activator.CreateInstance(item) as Tianya.ControlUI.ICaijiSiteBase; } } site返回null,请给出其他解决代码
时间: 2024-03-06 19:47:03 浏览: 154
Parallel.ForEach的卡死现象(线程操作问题C#源码实例)
如果`site`变量的值为`null`,那么有可能是因为`item`类型不能转换为`ICaijiSiteBase`接口,或者`item`类型的构造函数无法正确初始化`ICaijiSiteBase`接口的实例。你可以尝试使用以下代码来创建`site`实例:
```
foreach (var item in System.Reflection.Assembly.GetEntryAssembly().GetTypes())
{
if (typeof(ICaijiSiteBase).IsAssignableFrom(item) && !item.IsAbstract)
{
var siteInstance = Activator.CreateInstance(item) as ICaijiSiteBase;
if (siteInstance != null)
{
site = siteInstance;
break;
}
}
}
```
在这个代码中,我们使用`typeof(ICaijiSiteBase).IsAssignableFrom(item)`来检查`item`类型是否可以转换为`ICaijiSiteBase`接口,同时使用`!item.IsAbstract`来排除抽象类。然后,我们使用`Activator.CreateInstance(item) as ICaijiSiteBase`来创建`ICaijiSiteBase`接口的实例,并检查它是否为`null`。如果不是`null`,那么我们将其赋值给`site`变量,并且退出循环。
阅读全文