public void InvolveUser(IUser user, Contributions contribution) { if(!user.IsContributingAs(contribution)) { throw new ArgumentException(String.Format("User {0} is not a {1}.", user, contribution), "contribution"); } lock (involvements) { if (!IsUserInvolvedAs(user, contribution)) { involvements.Add(new KeyValuePair<IUser, Contributions>(user, contribution)); } } }