System.Xml.Serialization.SoapReflectionImporter.CreateNullableMapping C# (CSharp) Method

CreateNullableMapping() private method

private CreateNullableMapping ( TypeMapping baseMapping, TypeDesc typeDesc ) : NullableMapping
baseMapping TypeMapping
typeDesc TypeDesc
return NullableMapping
        NullableMapping CreateNullableMapping(TypeMapping baseMapping, TypeDesc typeDesc) {
            TypeMapping existingMapping = (TypeMapping)types[typeDesc.Name, baseMapping.Namespace];
            NullableMapping mapping;
            if (existingMapping != null) {
                if (existingMapping is NullableMapping) {
                    mapping = (NullableMapping)existingMapping;
                    if (mapping.BaseMapping is PrimitiveMapping && baseMapping is PrimitiveMapping)
                        return mapping;
                    else if (mapping.BaseMapping == baseMapping) {
                        return mapping;
                    }
                    else {
                        throw new InvalidOperationException(Res.GetString(Res.XmlTypesDuplicate, typeDesc.FullName, existingMapping.TypeDesc.FullName, typeDesc.Name, existingMapping.Namespace));
                    }
                }
                else if (!(baseMapping is PrimitiveMapping)){
                    throw new InvalidOperationException(Res.GetString(Res.XmlTypesDuplicate, typeDesc.FullName, existingMapping.TypeDesc.FullName, typeDesc.Name, existingMapping.Namespace));
                }
            }
            mapping = new NullableMapping();
            mapping.BaseMapping = baseMapping;
            mapping.TypeDesc = typeDesc;
            mapping.TypeName = baseMapping.TypeName;
            mapping.Namespace = baseMapping.Namespace;
            mapping.IncludeInSchema = false; //baseMapping.IncludeInSchema;
            types.Add(typeDesc.Name, baseMapping.Namespace, mapping);
            typeScope.AddTypeMapping(mapping);
            return mapping;
        }