public delegate void PrintStr(string s);
class Delegate_GetInvocationList
{
static void Main(string[] args)
{
MethodInfo mInfo = typeof(Hello).GetMethod("PrintStr", BindingFlags.Public | BindingFlags.Static);
PrintStr pStr = (PrintStr) Delegate.CreateDelegate(typeof(PrintStr), null, mInfo);
pStr += Hello.PrintStr2;
pStr += Hello.PrintStr3;
//pStr.DynamicInvoke("F#");
Delegate[] delegates = pStr.GetInvocationList();
foreach (Delegate d in delegates)
Console.WriteLine("delegate : " + d);
pStr(".NET");
pStr.DynamicInvoke("F#");
Console.ReadLine();
}
}
public class Hello
{
public static void PrintStr(string name)
{
Console.WriteLine("Hello, " + name);
}
public static void PrintStr2(string name)
{
Console.WriteLine("Hi, " + name);
}
public static void PrintStr3(string name)
{
Console.WriteLine("Hi22222, " + name);
}
class Delegate_GetInvocationList
{
static void Main(string[] args)
{
MethodInfo mInfo = typeof(Hello).GetMethod("PrintStr", BindingFlags.Public | BindingFlags.Static);
PrintStr pStr = (PrintStr) Delegate.CreateDelegate(typeof(PrintStr), null, mInfo);
pStr += Hello.PrintStr2;
pStr += Hello.PrintStr3;
//pStr.DynamicInvoke("F#");
Delegate[] delegates = pStr.GetInvocationList();
foreach (Delegate d in delegates)
Console.WriteLine("delegate : " + d);
pStr(".NET");
pStr.DynamicInvoke("F#");
Console.ReadLine();
}
}
public class Hello
{
public static void PrintStr(string name)
{
Console.WriteLine("Hello, " + name);
}
public static void PrintStr2(string name)
{
Console.WriteLine("Hi, " + name);
}
public static void PrintStr3(string name)
{
Console.WriteLine("Hi22222, " + name);
}
}
1. | CreateDelegate | 使用指定的第一个参数创建指定类型的委托,该委托表示指定的静态 |
2. | DynamicInvoke | 动态调用(后期绑定)由当前委托所表示的方法。 |
3. | GetInvocationList | 返回委托的调用列表。 |