隨着類型平等檢查
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