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,
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,
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.
public MyEnum MyEnumerator
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.