I'm looking for a good pattern to resolve the following circular reference in a Windows Form application:

* Assembly 1 contains a Windows Form with an Infragistics menu item ".Show"ing a Form in Assembly 2
* Assembly 2 contains a Windows Form with an Infragistics menu item ".Show"ing a Form in Assembly 1

The menu has generally the same items on it throughout the application. So both Assembly 1 and Assembly 2 have references to one another to "New up" one anothers' forms and .Show them.

A note about size: My app is an existing app, so the situation is not quite as simple as the above two-assembly situation. But if I can solve the above simply (probably not implementing a , I can apply that to a much larger application (about 20 components, all with several forms that pop each other up across components).

I've thought through a few solutions, but they all seem cumbersome. Is there a simple solution I'm missing?