public Project CreateProject(string projectName, string userName)
        {
            //Todo: Lock für Writer; wäre schlecht wenn das 2 Clients/Threads gleichzeitig machen.
            if (!IsValidName(projectName))
            {
                throw new InvalidOperationException("Project name is invalid");//Todo: Etwas heftig hier eine Exception zu werfen. Das muss anders gehen...
            }

            var newProjectDetails = new ProjectDetail()
            {
                CreatedBy    = userName,
                CreationDate = DateTime.Now,
                Name         = projectName,
            };

            var project = new Project(IdGenerator.GetNextId(), newProjectDetails);

            _projects.Add(project);

            _sourceCache.AddOrUpdate(project);

            return(project);
        }
 public Project(int id, ProjectDetail projectDetail)
 {
     ProjectDetail = projectDetail;
     Id            = id;
 }