/// <inheritdoc/> public ITestFrameworkDiscoverer GetDiscoverer(IAssemblyInfo assemblyInfo) { var discoverer = CreateDiscoverer(assemblyInfo); DisposalTracker.Add(discoverer); return(discoverer); }
/// <inheritdoc/> public ITestFrameworkExecutor GetExecutor(AssemblyName assemblyName) { var executor = CreateExecutor(assemblyName); DisposalTracker.Add(executor); return(executor); }
static object CreateInstance(IMessageSink diagnosticMessageSink, Type type, object[] ctorArgs) { ctorArgs = ctorArgs ?? new object[0]; object result = null; try { var ctorArgsWithMessageSink = ctorArgs.Concat(new object[] { diagnosticMessageSink }).ToArray(); result = Activator.CreateInstance(type, ctorArgsWithMessageSink); } catch (MissingMemberException) { try { result = Activator.CreateInstance(type, ctorArgs); } catch (MissingMemberException) { diagnosticMessageSink.OnMessage(new DiagnosticMessage($"Could not find constructor for '{type.FullName}' with arguments type(s): {(string.Join(", ", ctorArgs.Select(a => a == null ? "(unknown)" : a.GetType().FullName)))}")); throw; } } var disposable = result as IDisposable; if (disposable != null) { disposalTracker.Add(disposable); } return(result); }
private static object CreateInstance(Type type, object[] ctorArgs) { var result = Activator.CreateInstance(type, ctorArgs ?? new object[0]); var disposable = result as IDisposable; if (disposable != null) { disposalTracker.Add(disposable); } return(result); }