using delegate
-
I have a sample class as shown below
public class MyAirport
{
delegate void ProcessAirport(string s);
ProcessAirport pa;
public MyAirport(string sAirportName)
{
pa = new ProcessAirport(ProcessMumbai);
}
private void ProcessMumbai(string s)
{
MessageBox.Show(s);
}
public void ProcessAirport()
{
pa("Hello Mumbai");
}
}in the class above i have used created a delegate instance with statement
pa = new ProcessAirport(ProcessMumbai);
where in i am passing 'ProcessMumbai' directly as a function pointer to ProcessAirport delegate.now my question is : can i pass function pointer referance by string like,
pa = new ProcessAirport("ProcessMumbai");
if so, please guide.
thanks, vaibhav
-
I have a sample class as shown below
public class MyAirport
{
delegate void ProcessAirport(string s);
ProcessAirport pa;
public MyAirport(string sAirportName)
{
pa = new ProcessAirport(ProcessMumbai);
}
private void ProcessMumbai(string s)
{
MessageBox.Show(s);
}
public void ProcessAirport()
{
pa("Hello Mumbai");
}
}in the class above i have used created a delegate instance with statement
pa = new ProcessAirport(ProcessMumbai);
where in i am passing 'ProcessMumbai' directly as a function pointer to ProcessAirport delegate.now my question is : can i pass function pointer referance by string like,
pa = new ProcessAirport("ProcessMumbai");
if so, please guide.
thanks, vaibhav
AFAIK, you can't do that directly with delegates. You need to use reflection for that. Something like
public class MyAirport
{
delegate void ProcessAirportDelegate(MethodInfo methodInfo);
ProcessAirportDelegate pa;
public MyAirport(string airportName)
{
pa = new ProcessAirportDelegate(ProcessAirport);
}private void ProcessAirport(MethodInfo methodInfo)
{
methodInfo.Invoke(this, new object[] {}); // Your parameters, if any.
}public void CallProcessMethod(string methodName)
{
MethodInfo methodInfo = this.GetType().GetMethod(methodName);
pa(methodInfo);
}
}I created a delegate because your code had one. You can instead call
methodInfo.Invoke
directly fromCallProcessMethod
. Regards Senthil _____________________________ My Blog | My Articles | WinMacro -
AFAIK, you can't do that directly with delegates. You need to use reflection for that. Something like
public class MyAirport
{
delegate void ProcessAirportDelegate(MethodInfo methodInfo);
ProcessAirportDelegate pa;
public MyAirport(string airportName)
{
pa = new ProcessAirportDelegate(ProcessAirport);
}private void ProcessAirport(MethodInfo methodInfo)
{
methodInfo.Invoke(this, new object[] {}); // Your parameters, if any.
}public void CallProcessMethod(string methodName)
{
MethodInfo methodInfo = this.GetType().GetMethod(methodName);
pa(methodInfo);
}
}I created a delegate because your code had one. You can instead call
methodInfo.Invoke
directly fromCallProcessMethod
. Regards Senthil _____________________________ My Blog | My Articles | WinMacro