Home  /  Questions  /  Question

88   96.5
Jan 01, 2012

Accessing an entity through a dll chain


Here is my scenario: I have three .dll class libraries, LibraryA, LibraryB, & Library C.
Library A references B and  B references to C, like so: LibraryA -> LibraryB-->LibraryC   .
In these libraries I have my classes, enums, structs, etc.
Sometimes I need an enum from library A and use it in library C. 
This creates a circular dependency, so  I cannot access this enum from library C.
How would I solve this problem?

Should I create a new common library, say LibraryD, which includes all of the shared items of Library A-B-C?

Thanks and best regards,

50   50
Jan 03, 2012

Your guess is right, you should create a new common library which will have common code which can be used in any other library.

Thanks & Regards,
Ankit Parikh

90   96.5
Jan 03, 2012
Could you please explain your problem little more clear.
From your statement "Sometimes I need an enum from library A and use it in library C. "

I guess you mean libraryA.Enum is required by LibraryC?

If my guess is correct , considering the Chain you have put here, there may be a Cyclic Reference only if Library A tries to use an Enum defined in LIbrary C. In your case it should not be a problem.

Ideally if you want to expose an Enum defined in Library A to Library C you should have a public Property in Library A, which could be used by C.

Library A...

MyEnum _myEnum=MyEnum.DefaultValue;
public MyEnum MyEnumerator
 get{return _myEnum;}

Library A internally - at any instance may update _myEnum private variable so that Library C can only use A's Enum and not update it.


Jan 04, 2012

Yes. Create a new class library project and keep all your common functions inside this library and referenced it wherever required.