Proper library for enums
        Posted  
        
            by 
                Bobson
            
        on Programmers
        
        See other posts from Programmers
        
            or by Bobson
        
        
        
        Published on 2013-10-17T22:22:50Z
        Indexed on 
            2013/10/18
            4:11 UTC
        
        
        Read the original article
        Hit count: 266
        
I'm trying to refactor some code such that the display is separate from the implementation, and I'm not sure where to put the existing enums. 
My project is currently structured as follows:
- Utilities
- RemoteData (Depends on: Utilities)
- LocalData (Depends on: RemoteData,Utilities)
- RemoteWeb (Depends on: RemoteData,Utilities)
- LocalWeb (Depends on: RemoteData,LocalData,Utilities)
I'm now trying to add "ViewLibrary (Depends on: Utilities)" to this list, and then adding it as a new dependency to both RemoteWeb and LocalWeb.  It will contain a set of interfaces which the other two projects will implement, use to populate the view, and then consume the result.
There's an enum which is currently used in all the projects except Utilities.  It thus lives in the RemoteData project, because everything else depends on it.  But this new ViewLibrary won't depend on either data project.  So how will it know about this enum?  
Some options I see:
- Create a new project just for shared enum values.
- Add it to Utilities, even though it is related to data.
- Define it a second time in ViewLibrary, and require bothRemoteWebandLocalWebto convert the one type into the other when they access the shared views.
- Add a dependency on RemoteDatato theViewLibrary, even though it's supposed to be independent of data-source.
Are there any better options? Is this structure flawed to begin with?
© Programmers or respective owner