随着类型平等检查
public abstract class CompositionPlugin { ... }
和
public class MyCompositionPlugin : CompositionPlugin { ... }
我想检查对象的类型是等于给定类型:
public class Framework {
public IList<CompositionPlugin> CompositionPlugins = new List<CompositionPlugin>();
public CompositionPlugin GetCompositionPlugin(Type ofType)
{
foreach (CompositionPlugin plugin in CompositionPlugins)
{
if (plugin.GetType().Equals(ofType))
return plugin;
}
throw new ArgumentException("A composition plugin of type " + ofType.FullName + " could not be found");
}
}
凡方法这样称呼:
Framework framework = new Framework();
// Adding the plugin to the framework is done by loading an assembly and
// checking if it contains plugin-compatible classes (i.e. subclasses
// of <CompositionPlugin>)
framework.RegisterAssembly("E:\\Projects\\Framework\\MyPlugin\\bin\\Debug\\MyPlugin.dll");
CompositionPlugin plugin = framework.GetCompositionPlugin(typeof(MyCompositionPlugin));
然而,当测试时,这个检查总是失败,尽管我绝对在列表中有这种类型的对象。
在我的理解中,它应该返回在CompositionPlugins
-List中找到的第一个MyCompositionPlugin
实例。
我的类型检查是否错误?为什么?它是如何正确地完成的?
放一些更多的代码。你如何生成ofType参数?为什么测试失败?你调试了吗? – 2012-08-01 14:20:45
@tostringtheory它会返回确切的类型。可能是一个继承CompositionPlugins的类 – 2012-08-01 14:21:58
我增加了一些代码和我期望的返回值。 – 2012-08-01 14:27:02