/// <summary> /// Create a new classification type and add it to the registry. /// </summary> public IClassificationType CreateClassificationType(string type, IEnumerable <IClassificationType> baseTypes) { if (type == null) { throw new ArgumentNullException(nameof(type)); } if (baseTypes == null) { throw new ArgumentNullException(nameof(baseTypes)); } if (ClassificationTypes.ContainsKey(type)) { throw new InvalidOperationException(LookUp.Strings.ClassificationAlreadyAdded); } // Use the non-canonical name for the actual type ClassificationTypeImpl classificationType = new ClassificationTypeImpl(type); foreach (var baseType in baseTypes) { classificationType.AddBaseType(baseType); } ClassificationTypes.Add(type, classificationType); return(classificationType); }