Circular reference among two .net assemblies

Lys picture Lys · Aug 17, 2010 · Viewed 8.2k times · Source

I have two assemblies A & B.

A has existing reference to B and it must be kept that way. Right now I made some changes to B that need to refer to A. So circular reference occurs.

Bit of details:

A has a few property grids that the dialog in B needs to be hosted. So to avoid this circular reference issue I tried to define interfaces to grids in third assembly to which A & B both refer, and make B only refers to the interfaces.

Two issues I'm facing:

  1. there’s too much custom data types (properties to be specific) inside the grids which are defined inside A and I have to define interfaces for every one of them.

  2. I see example of this works with function parameter e.g. call target function through the interface passed in. But how would it fit considering the following code - I can't new a ICustomPropertyGridWrapper...

    object = new CustomPropertyGridWrapper(...)
    m_property.SelectedObject = object;

Answer

slugster picture slugster · Aug 17, 2010

Sounds like you are attempting death by interface. Not everything has to be exposed by interface.

A simple answer is to either merge the assemblies, or move the common controls and data types to a third assembly. You only need to interface things if you want a consistent contractual way to access or work with things, and you want to hide the actual implementation.