C# では、コンストラクター、継承、およびイベント サブスクリプションに問題があるようです。
次の C# プログラムを検討してください。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace EventTest
{
public class Widget
{
public delegate void MyEvent();
public event MyEvent myEvent;
public void SetEvent()
{
myEvent();
}
}
public class Base
{
Widget myWidget;
protected Base() { }
protected Base(Widget awidget)
{
myWidget = awidget;
myWidget.myEvent += myEvent;
}
public void myEvent() { }
}
public class Derived : Base
{
public Derived(Widget awidget) : base(awidget) { }
new public void myEvent()
{
System.Console.WriteLine("The event was fired, and this text is the response!");
}
}
class Program
{
static void Main(string[] args)
{
Widget myWidget = new Widget();
Derived myDerived = new Derived(myWidget);
myWidget.SetEvent();
}
}
}
私が欲しいのは、テキストが表示されることです。つまり、継承された基本メソッドを基本クラスのイベントにサブスクライブし、サブクラスでコンストラクターを呼び出して、そのイベントが発生したときに基本クラスの代わりに呼び出されるサブクラスのイベント メソッドを取得したいと考えています。
これを行う方法はありますか?