/// <summary> /// Populates the <see cref="RunInvokerTree"/> invoker graph /// with <see cref="IRunInvoker"/> generated by the run. /// </summary> /// <param name="tree">Invoker tree</param> /// <param name="parent">parent vertex</param> /// <param name="t">class type that is marked by the run</param> /// <remarks> /// </remarks> public void Reflect(RunInvokerTree tree, RunInvokerVertex parent, Type t) { foreach(MethodInfo mi in TypeHelper.GetAttributedMethods(t,typeof(IndexerProviderAttribute))) { // get attribute IndexerProviderAttribute attr = (IndexerProviderAttribute)TypeHelper.GetFirstCustomAttribute(mi,typeof(IndexerProviderAttribute)); // add indexer provider IRunInvoker invoker = new ArgumentFeederRunInvoker(this,mi); RunInvokerVertex child = tree.AddChild(parent,invoker); // add tester CustomRun testerRun = new CustomRun( this.testerType, typeof(TestAttribute), true, attr ); testerRun.Reflect(tree,child,t); } }