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 매개 변수는 어떻게 생성합니까? 왜 검사가 실패 했나요? 디버깅 해 봤어? –
@tostringtheory는 정확한 유형을 반환합니다. CompositionPlugins를 상속받은 클래스 일 수 있습니다. –
좀 더 많은 코드와 반환 값으로 기대되는 것을 추가했습니다. –