我的集会中有以下种类:
我还有一份XML文件,使用<代码>DeviceInfoprovider基类提供人。 简略版本就是这样:
<DeviceInfoProvider Type="SbRioI2CProvider" Assembly="assembly.dll" >
</DeviceInfoProvider>
<DeviceInfoProvider Type="GenericProvider" Assembly="assembly.dll" >
</DeviceInfoProvider>
当时,我把XML的田地描绘成我的变量:
assembly.dll ⇒ assemblyPath
Type ⇒ typeName
在阅读XML之后,使用以下代码来介绍我的类型:
var assembly = Assembly.LoadFrom(assemblyPath);
var type = (from t in assembly.GetTypes()
where t.IsPublic && t.Name == typeName
select t).FirstOrDefault();
if (type != null)
{
instance = type.GetConstructor(Type.EmptyTypes).Invoke(null);
}
按照预期,这能适当地产生我的物体。
问题在于,我试图作为基类物体进行审判:
using (var provider = instance as DeviceInfoProvider)
{
// provider is null!
}
<代码>instance的操作时间类型是预期的衍生类别,但我无法成功地将其归入其基类。
我失踪了什么?