public bool CanExport(Type type) { if (type == null) { throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(type))); } DataContractSet oldValue = (_dataContractSet == null) ? null : new DataContractSet(_dataContractSet); try { AddType(type); AddKnownTypes(); return(true); } catch (InvalidDataContractException) { _dataContractSet = oldValue; return(false); } catch (Exception ex) { if (DiagnosticUtility.IsFatal(ex)) { throw; } _dataContractSet = oldValue; TraceExportError(ex); throw; } }
public void Export(Type type) { if (type == null) { throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(type))); } TraceExportBegin(); DataContractSet oldValue = (_dataContractSet == null) ? null : new DataContractSet(_dataContractSet); try { AddType(type); Export(); } catch (Exception ex) { if (DiagnosticUtility.IsFatal(ex)) { throw; } _dataContractSet = oldValue; TraceExportError(ex); throw; } TraceExportEnd(); }
private static bool IsTypeReferenceable(Type type) { Type itemType; try { TypeInfo typeInfo = type.GetTypeInfo(); return(typeInfo.IsSerializable || typeInfo.IsAttributeDefined(Globals.TypeOfDataContractAttribute) || (Globals.TypeOfIXmlSerializable.IsAssignableFrom(type) && !typeInfo.IsGenericTypeDefinition) || CollectionDataContract.IsCollection(type, out itemType) || ClassDataContract.IsNonAttributedTypeValidForSerialization(type)); } catch (Exception ex) { // An exception can be thrown in the designer when a project has a runtime binding redirection for a referenced assembly or a reference dependent assembly. // Type.IsDefined is known to throw System.IO.FileLoadException. // ClassDataContract.IsNonAttributedTypeValidForSerialization is known to throw System.IO.FileNotFoundException. // We guard against all non-critical exceptions. if (DiagnosticUtility.IsFatal(ex)) { throw; } } return(false); }
private bool InternalCanImport(XmlSchemaSet schemas, ICollection <XmlQualifiedName> typeNames, ICollection <XmlSchemaElement> elements, XmlQualifiedName[] elementTypeNames) { DataContractSet oldValue = (_dataContractSet == null) ? null : new DataContractSet(_dataContractSet); try { SchemaImporter schemaImporter = new SchemaImporter(schemas, typeNames, elements, elementTypeNames, DataContractSet, ImportXmlDataType); schemaImporter.Import(); return(true); } catch (InvalidDataContractException) { _dataContractSet = oldValue; return(false); } catch (Exception ex) { if (DiagnosticUtility.IsFatal(ex)) { throw; } _dataContractSet = oldValue; TraceImportError(ex); throw; } }
public bool CanExport(ICollection <Assembly> assemblies) { if (assemblies == null) { throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(assemblies))); } DataContractSet oldValue = (_dataContractSet == null) ? null : new DataContractSet(_dataContractSet); try { foreach (Assembly assembly in assemblies) { if (assembly == null) { throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.Format(SR.CannotExportNullAssembly, nameof(assemblies)))); } Type[] types = assembly.GetTypes(); for (int j = 0; j < types.Length; j++) { CheckAndAddType(types[j]); } } AddKnownTypes(); return(true); } catch (InvalidDataContractException) { _dataContractSet = oldValue; return(false); } catch (Exception ex) { if (DiagnosticUtility.IsFatal(ex)) { throw; } _dataContractSet = oldValue; TraceExportError(ex); throw; } }
private void InternalImport(XmlSchemaSet schemas, ICollection <XmlQualifiedName> typeNames, ICollection <XmlSchemaElement> elements, XmlQualifiedName[] elementTypeNames /*filled on return*/) { DataContractSet oldValue = (_dataContractSet == null) ? null : new DataContractSet(_dataContractSet); try { SchemaImporter schemaImporter = new SchemaImporter(schemas, typeNames, elements, elementTypeNames /*filled on return*/, DataContractSet, ImportXmlDataType); schemaImporter.Import(); CodeExporter codeExporter = new CodeExporter(DataContractSet, Options, GetCodeCompileUnit()); codeExporter.Export(); } catch (Exception ex) { if (DiagnosticUtility.IsFatal(ex)) { throw; } _dataContractSet = oldValue; TraceImportError(ex); throw; } }
public void Export(ICollection <Type> types) { if (types == null) { throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(types))); } TraceExportBegin(); DataContractSet oldValue = (_dataContractSet == null) ? null : new DataContractSet(_dataContractSet); try { foreach (Type type in types) { if (type == null) { throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.Format(SR.CannotExportNullType, nameof(types)))); } AddType(type); } Export(); } catch (Exception ex) { if (DiagnosticUtility.IsFatal(ex)) { throw; } _dataContractSet = oldValue; TraceExportError(ex); throw; } TraceExportEnd(); }
static DictionaryGlobals() { // Update array size when adding new strings or templates XmlDictionary dictionary = new XmlDictionary(61); try { // 0 SchemaInstanceNamespace = dictionary.Add(Globals.SchemaInstanceNamespace); SerializationNamespace = dictionary.Add(Globals.SerializationNamespace); SchemaNamespace = dictionary.Add(Globals.SchemaNamespace); XsiTypeLocalName = dictionary.Add(Globals.XsiTypeLocalName); XsiNilLocalName = dictionary.Add(Globals.XsiNilLocalName); // 5 IdLocalName = dictionary.Add(Globals.IdLocalName); RefLocalName = dictionary.Add(Globals.RefLocalName); ArraySizeLocalName = dictionary.Add(Globals.ArraySizeLocalName); EmptyString = dictionary.Add(string.Empty); ISerializableFactoryTypeLocalName = dictionary.Add(Globals.ISerializableFactoryTypeLocalName); // 10 XmlnsNamespace = dictionary.Add(Globals.XmlnsNamespace); CharLocalName = dictionary.Add("char"); BooleanLocalName = dictionary.Add("boolean"); SignedByteLocalName = dictionary.Add("byte"); UnsignedByteLocalName = dictionary.Add("unsignedByte"); // 15 ShortLocalName = dictionary.Add("short"); UnsignedShortLocalName = dictionary.Add("unsignedShort"); IntLocalName = dictionary.Add("int"); UnsignedIntLocalName = dictionary.Add("unsignedInt"); LongLocalName = dictionary.Add("long"); // 20 UnsignedLongLocalName = dictionary.Add("unsignedLong"); FloatLocalName = dictionary.Add("float"); DoubleLocalName = dictionary.Add("double"); DecimalLocalName = dictionary.Add("decimal"); DateTimeLocalName = dictionary.Add("dateTime"); // 25 StringLocalName = dictionary.Add("string"); ByteArrayLocalName = dictionary.Add("base64Binary"); ObjectLocalName = dictionary.Add("anyType"); TimeSpanLocalName = dictionary.Add("duration"); GuidLocalName = dictionary.Add("guid"); // 30 UriLocalName = dictionary.Add("anyURI"); QNameLocalName = dictionary.Add("QName"); ClrTypeLocalName = dictionary.Add(Globals.ClrTypeLocalName); ClrAssemblyLocalName = dictionary.Add(Globals.ClrAssemblyLocalName); Space = dictionary.Add(Globals.Space); // 35 timeLocalName = dictionary.Add("time"); dateLocalName = dictionary.Add("date"); hexBinaryLocalName = dictionary.Add("hexBinary"); gYearMonthLocalName = dictionary.Add("gYearMonth"); gYearLocalName = dictionary.Add("gYear"); // 40 gMonthDayLocalName = dictionary.Add("gMonthDay"); gDayLocalName = dictionary.Add("gDay"); gMonthLocalName = dictionary.Add("gMonth"); integerLocalName = dictionary.Add("integer"); positiveIntegerLocalName = dictionary.Add("positiveInteger"); // 45 negativeIntegerLocalName = dictionary.Add("negativeInteger"); nonPositiveIntegerLocalName = dictionary.Add("nonPositiveInteger"); nonNegativeIntegerLocalName = dictionary.Add("nonNegativeInteger"); normalizedStringLocalName = dictionary.Add("normalizedString"); tokenLocalName = dictionary.Add("token"); // 50 languageLocalName = dictionary.Add("language"); NameLocalName = dictionary.Add("Name"); NCNameLocalName = dictionary.Add("NCName"); XSDIDLocalName = dictionary.Add("ID"); IDREFLocalName = dictionary.Add("IDREF"); // 55 IDREFSLocalName = dictionary.Add("IDREFS"); ENTITYLocalName = dictionary.Add("ENTITY"); ENTITIESLocalName = dictionary.Add("ENTITIES"); NMTOKENLocalName = dictionary.Add("NMTOKEN"); NMTOKENSLocalName = dictionary.Add("NMTOKENS"); // 60 AsmxTypesNamespace = dictionary.Add("http://microsoft.com/wsdl/types/"); // Add new templates here } catch (Exception ex) { if (DiagnosticUtility.IsFatal(ex)) { throw; } throw DiagnosticUtility.ExceptionUtility.ThrowHelperFatal(ex.Message, ex); } }
//Returns warnings public IList <string> GenerateCode(IList <Assembly> assemblies) { if (assemblies == null) { throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException(nameof(assemblies))); } List <string> warnings = new List <string>(); DataContractSet oldValue = (dataContractSet == null) ? null : new DataContractSet(dataContractSet); try { for (int i = 0; i < assemblies.Count; i++) { Assembly assembly = assemblies[i]; if (assembly == null) { throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.Format(SR.CannotExportNullAssembly, "assemblies"))); } Type[] types = assembly.GetTypes(); for (int j = 0; j < types.Length; j++) { try { CheckAndAddType(types[j]); } catch (Exception ex) { warnings.Add("Error on exporting Type " + DataContract.GetClrTypeFullName(types[j]) + ". " + ex.Message); } } } foreach (KeyValuePair <XmlQualifiedName, DataContract> pair in dataContractSet) { DataContract dataContract = pair.Value; if (dataContract is ClassDataContract) { try { XmlFormatClassWriterDelegate writerMethod = ((ClassDataContract)dataContract).XmlFormatWriterDelegate; XmlFormatClassReaderDelegate readerMethod = ((ClassDataContract)dataContract).XmlFormatReaderDelegate; } catch (Exception ex) { warnings.Add("Error on exporting Type " + dataContract.UnderlyingType + ". " + ex.Message); } } else if (dataContract is CollectionDataContract) { try { XmlFormatCollectionWriterDelegate writerMethod = ((CollectionDataContract)dataContract).XmlFormatWriterDelegate; XmlFormatCollectionReaderDelegate readerMethod = ((CollectionDataContract)dataContract).XmlFormatReaderDelegate; } catch (Exception ex) { warnings.Add("Error on exporting Type " + dataContract.UnderlyingType + ". " + ex.Message); } } } return(warnings); } catch (Exception ex) { if (DiagnosticUtility.IsFatal(ex)) { throw; } dataContractSet = oldValue; TraceExportError(ex); throw; } }
static DictionaryGlobals() { // Update array size when adding new strings or templates XmlDictionary dictionary = new XmlDictionary(61); try { // 0 SchemaInstanceNamespace = dictionary.Add(Globals.SchemaInstanceNamespace); SerializationNamespace = dictionary.Add(Globals.SerializationNamespace); SchemaNamespace = dictionary.Add(Globals.SchemaNamespace); XsiTypeLocalName = dictionary.Add(Globals.XsiTypeLocalName); XsiNilLocalName = dictionary.Add(Globals.XsiNilLocalName); // 5 IdLocalName = dictionary.Add(Globals.IdLocalName); RefLocalName = dictionary.Add(Globals.RefLocalName); ArraySizeLocalName = dictionary.Add(Globals.ArraySizeLocalName); EmptyString = dictionary.Add(String.Empty); // 10 XmlnsNamespace = dictionary.Add(Globals.XmlnsNamespace); CharLocalName = dictionary.Add("char"); BooleanLocalName = dictionary.Add("boolean"); SignedByteLocalName = dictionary.Add("byte"); UnsignedByteLocalName = dictionary.Add("unsignedByte"); // 15 ShortLocalName = dictionary.Add("short"); UnsignedShortLocalName = dictionary.Add("unsignedShort"); IntLocalName = dictionary.Add("int"); UnsignedIntLocalName = dictionary.Add("unsignedInt"); LongLocalName = dictionary.Add("long"); // 20 UnsignedLongLocalName = dictionary.Add("unsignedLong"); FloatLocalName = dictionary.Add("float"); DoubleLocalName = dictionary.Add("double"); DecimalLocalName = dictionary.Add("decimal"); DateTimeLocalName = dictionary.Add("dateTime"); // 25 StringLocalName = dictionary.Add("string"); ByteArrayLocalName = dictionary.Add("base64Binary"); ObjectLocalName = dictionary.Add("anyType"); TimeSpanLocalName = dictionary.Add("duration"); GuidLocalName = dictionary.Add("guid"); // 30 UriLocalName = dictionary.Add("anyURI"); QNameLocalName = dictionary.Add("QName"); ClrTypeLocalName = dictionary.Add(Globals.ClrTypeLocalName); ClrAssemblyLocalName = dictionary.Add(Globals.ClrAssemblyLocalName); Space = dictionary.Add(Globals.Space); hexBinaryLocalName = dictionary.Add("hexBinary"); // Add new templates here } catch (Exception ex) { if (DiagnosticUtility.IsFatal(ex)) { throw; } throw DiagnosticUtility.ExceptionUtility.ThrowHelperFatal(ex.Message, ex); } }