private IDictionary <string, Type> GetDataModelCache() { if (_modelTypes == null) { // TODO Include namespace to prevent issues with duplicate model names var assemblies = AssemblyScanner .FindAssemblies(assembly => assembly.FullName.StartsWith("Evans")); // TODO Retrieve types using [DataModel] attribute instead of IModel _modelTypes = TypeScanner .GetImplementingTypes(typeof(IDomainEntity), assemblies) .ToDictionary(model => model.Name, model => model); } return(_modelTypes); }