예를 들면, 자바스크립트의 경우 var a = eval("test" + i) 라고 하면 a는 test{i} 형으로 메소드를 실행할 수 있습니다.

php도 동적변수 할당이 쉬워도 너무쉽습니다.


닷넷에서는 어떻게 처리할까?? 특정 메소드명이 동적일 경우, 수행해야될때... 아마도 많을 것입니다.

다음예제를 보면 쉽게 답이 나올것이다. 닷넷에서는 리플렉션이란 방법으로 동적으로 수행이 가능합니다.


C#의 리플렉션이란 런타임시 객체의 타입정보를 조사한다.


foreach (XmlNode node in testNodeList)
{
    string assemblyname = node.Attributes["assemblyname"].Value;
    string classname = node.Attributes["classname"].Value;
    string methodname = node.Attributes["methodname"].Value;

    string assembly = Path.Combine(directory, assemblyname);
    Assembly assem = System.Reflection.Assembly.LoadFrom(assembly);

    object obj = Activator.CreateInstance(assem.GetType(classname));
    Type testProcess = assem.GetType(classname);
    
    string testStr = testProcess.InvokeMember(
				methodname,
				BindingFlags.DeclaredOnly 
				| BindingFlags.Public 
				| BindingFlags.NonPublic 
				| BindingFlags.Instance 
				| BindingFlags.InvokeMethod,
				null
				, obj
				, new object[] { drMaster, paramList, schemaDocument, node }
		     ).ToString();

    testQuery += testQuery.Equals("") ? testStr.Trim() : " " + testStr.Trim();
}


코드에 주석은 생략한다.


자세한 정보는 다음을 참고하세요.

http://www.csharp-examples.net/reflection-examples/