public IDocumentStore GetOrCreate(
string name,
AccessMode accessMode = AccessMode.ReadOnly,
Action<DocumentStore> initializer = null)
{
name.Ensure("name").IsNotNullOrWhiteSpace();
var existingWrapper = allStoreWrappers.SingleOrDefault(
store =>
store.Name.Equals(name, StringComparison.OrdinalIgnoreCase) &&
store.AccessMode == accessMode);
if (existingWrapper != null)
{
return existingWrapper;
}
initializer = initializer ?? (store => store.Initialize());
Action<DocumentStoreWrapper> updateInnerStore =
wrapper => this.UpdateInnerStore(wrapper, initializer);
var newStore = new DocumentStoreWrapper(name, accessMode, updateInnerStore);
allStoreWrappers.Add(newStore);
return newStore;
}