イベントのクラスを使用してプロジェクトを作成するだけです。
public class BaseFormEventClass
{
public EventHandler<EventArgs> BaseFormDidSomething;
}
次に、ベースフォームプロジェクトとコンポーネントプロジェクトの両方からこのプロジェクトを参照します。ベースフォームにイベントクラスのインスタンスを作成させ、ロードするすべてのコンポーネントにそれを渡します。
public class MyComponent
{
public MyComponent(BaseFormEventClass eventClass)
{
eventClass.BaseFormDidSomething += this.EventClass_BaseFormDidSometing;
}
// ...
}
public class BaseForm
{
private BaseFormEventClass eventClass = new BaseFormEventClass();
private void LoadComponents()
{
MyComponent component1 = new MyComponent(this.eventClass);
}
private void RaiseBaseFormDidSomething()
{
EventHandler<EventArgs> handler = eventClass.BaseFormDidSomething;
if (handler != null) handler(this, EventArgs.Empty);
}
}