Import() 공개 메소드

public Import ( XmlSchemaSet schemas, XmlSchemaElement element ) : XmlQualifiedName
schemas System.Xml.Schema.XmlSchemaSet
element System.Xml.Schema.XmlSchemaElement
리턴 System.Xml.XmlQualifiedName
		void IWsdlImportExtension.ImportContract (WsdlImporter importer,
			WsdlContractConversionContext context)
		{
			if (!enabled)
				return;

			if (importer == null)
				throw new ArgumentNullException ("importer");
			if (context == null)
				throw new ArgumentNullException ("context");
			if (this.importer != null || this.context != null)
				throw new SystemException ("INTERNAL ERROR: unexpected recursion of ImportContract method call");

			dc_importer = new XsdDataContractImporter ();
			schema_set_in_use = new XmlSchemaSet ();
			schema_set_in_use.Add (importer.XmlSchemas);
			foreach (WSDL wsdl in importer.WsdlDocuments)
				foreach (XmlSchema xs in wsdl.Types.Schemas)
					schema_set_in_use.Add (xs);
			dc_importer.Import (schema_set_in_use);

			this.importer = importer;
			this.context = context;
			try {
				DoImportContract ();
			} finally {
				this.importer = null;
				this.context = null;
			}
		}
예제 #2
0
		CodeCompileUnit DoImport (bool xmlType, params string [] schemaFiles)
		{
			var ccu = new CodeCompileUnit ();
			var xdi = new XsdDataContractImporter (ccu);
			if (xmlType)
				xdi.Options = new ImportOptions () { ImportXmlType = true };
			var xss = new XmlSchemaSet ();
			foreach (var schemaFile in schemaFiles)
				xss.Add (null, schemaFile);
			xdi.Import (xss);

			return ccu;
		}
예제 #3
0
		public void ImportGivesAppropriateNamespaces ()
		{
			var ccu = new CodeCompileUnit ();
			var xdi = new XsdDataContractImporter (ccu);
			var xss = new XmlSchemaSet ();
			xss.Add (null, "Test/Resources/Schemas/schema1.xsd");
			xss.Add (null, "Test/Resources/Schemas/schema2.xsd");
			xss.Add (null, "Test/Resources/Schemas/schema3.xsd");
			xdi.Import (xss);
			var sw = new StringWriter ();
			bool t = false, te = false;
			foreach (CodeNamespace cns in ccu.Namespaces) {
				if (cns.Name == "tempuri.org")
					t = true;
				else if (cns.Name == "tempuri.org.ext")
					te = true;
				Assert.AreEqual ("GetSearchDataResponse", cns.Types [0].Name, "#1." + cns.Name);
			}
			Assert.IsTrue (t, "t");
			Assert.IsTrue (t, "te");
		}
예제 #4
0
		public void ImportSkipArrayOfPrimitives ()
		{
			var ccu = new CodeCompileUnit ();
			var xdi = new XsdDataContractImporter (ccu);
			var xss = new XmlSchemaSet ();
			xss.Add (null, "Test/Resources/Schemas/schema1.xsd");
			xss.Add (null, "Test/Resources/Schemas/schema2.xsd");
			xdi.Import (xss);
			var sw = new StringWriter ();
			new CSharpCodeProvider ().GenerateCodeFromCompileUnit (ccu, sw, null);
			Assert.IsTrue (sw.ToString ().IndexOf ("ArrayOfint") < 0, "#1");
		}
		CodeCompileUnit DoImport (params string [] schemaFiles)
		{
			var ccu = new CodeCompileUnit ();
			var xdi = new XsdDataContractImporter (ccu);
			var xss = new XmlSchemaSet ();
			foreach (var schemaFile in schemaFiles)
				xss.Add (null, schemaFile);
			xdi.Import (xss);

			return ccu;
		}
        private CodeCompileUnit GenerateTypesWithDataContractImporter(XmlSchemaSet schemas)
		{
			XsdDataContractImporter importer = new XsdDataContractImporter();
			importer.Options = CreateImportOptions(false);

			schemas.ValidationEventHandler += this.validationEventHandler;

			try
			{				
				importer.Import(schemas);
				return importer.CodeCompileUnit;
			}
			catch (InvalidDataContractException dataContractException)
			{
				// double check since CanImport may trigger a "false" positive
				// after adding serialization and types schemas
				importer.CanImport(schemas);
				if (!importer.CanImport(schemas))
				{
					throw new InvalidSerializerException(dataContractException.Message);
				}
				throw;
			}
			catch (ArgumentException argumentException)
			{
				throw new InvalidOperationException(argumentException.Message, argumentException.InnerException);
			}
			finally
			{
				schemas.ValidationEventHandler -= this.validationEventHandler;
			}
		}