This project came out of the need to deal with many different file management contexts. I would constantly need to determine the path to an image for an entity of type Foo, then I would need a text file for an entity of type Bar. Keep on adding different entity contexts and file types and I would have a configuration nightmare.
Secretary.Net requires a bit of setup up front. Here are the components needed to get going:
Acquiring a secretary for file search
The Story Goes Like This
Upon application startup all schools are instantiated with their base paths and specializations. Secretaries are enrolled in these schools and upon graduation are fully capable of retrieving files. Simple secretaries require no additional data to obtain a file reference, while specialized entity secretaries and use properties of an entity instance to dynamically determine path locations for each specific instance.
To obtain a secretary to fulfill a file location seek, the specification pattern can be used to query the collection to find the secretary that can handle the scenario.