
This is the Title of the Book, eMatter Edition
Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.
Dynamically Invoking Members
|
777
13.11 Dynamically Invoking Members
Problem
You have a list of method names that you wish to invoke dynamically within your
application. As your code executes, it will pull names off this list and attempt to
invoke these methods. This technique might be useful to create a test harness for
components that reads in the methods to execute from an XML file and executes
them with the given parameters.
Solution
The TestDynamicInvocation method shown in Example 13-4 calls the DynamicInvocation
method, which opens the XML configuration file, reads out the test information, and
executes each test method dynamically.
Example 13-4. Invoking members dynamically
public static void TestExecuteTests( )
{
ExecuteTests(@"..\..\SampleClassLibrary\SampleClassLibraryTests.xml",
@"SampleClassLibrary.dll");
}
public static void ExecuteTests(string xmlFile, string path)
{
// Read in the methods to run from the XML file.
XmlDocument doc = new XmlDocument( );
doc.Load(xmlFile);
// Get the tests to run.
XmlNodeList nodes = doc.SelectNodes(@"Tests/Test");
// Run each test method.
foreach(XmlNode node in nodes)
{
// Get the name of the type from the className attribute on Test.
string typeName = node.Attributes.GetNamedItem("className").Value;
// Get the name of the method from the ...