デリゲートと遊んでいて、何が起こっているのかわからない状況になりました。
私のロジックでは、"greetings" デリゲートの呼び出しリストは 2 を返すはずですが、1 を返すだけです。ご覧のとおり、作成したオブジェクトへのデリゲート参照を渡しています。デリゲートが外部からプライベート メソッドを参照できることを確認したかったのですが、唯一の要件は、デリゲートへのメソッドの割り当て中にメソッドにアクセスできることです。
class Program
{
static void Main(string[] args)
{
Action greetings = FirstGreeting;
Test test = new Test();
test.AddGreeting(greetings);
Console.WriteLine(greetings.GetInvocationList().Count());
greetings();
Console.ReadLine();
}
static void FirstGreeting()
{
Console.WriteLine("This is the first greeting.");
}
}
class Test
{
public void AddGreeting(Action greetings)
{
greetings += new Action(SecondGreeting);
}
private void SecondGreeting()
{
Console.WriteLine("This is the second greeting.");
}
}