System.Runtime.Serialization.XsdDataContractImporter.AddTypeAttributes C# (CSharp) Метод

AddTypeAttributes() приватный Метод

private AddTypeAttributes ( CodeTypeDeclaration td, XmlSchemaType type ) : void
td System.CodeDom.CodeTypeDeclaration
type System.Xml.Schema.XmlSchemaType
Результат void
		void AddTypeAttributes (CodeTypeDeclaration td, XmlSchemaType type, params XmlSchemaElement [] collectionArgs)
		{
			var name = type.QualifiedName;
			// [GeneratedCode (assembly_name, assembly_version)]
			td.CustomAttributes.Add (new CodeAttributeDeclaration (
				new CodeTypeReference (typeof (GeneratedCodeAttribute)),
				new CodeAttributeArgument (new CodePrimitiveExpression (ass_name)),
				new CodeAttributeArgument (new CodePrimitiveExpression (ass_version))));

			var ct = type as XmlSchemaComplexType;

			// [DataContract(Name="foobar",Namespace="urn:foobar")] (optionally IsReference=true),
			// or [CollectionDataContract(ditto, ItemType/KeyType/ValueType)]
			var dca = new CodeAttributeDeclaration (
				collectionArgs != null && collectionArgs.Length > 0 ? typeref_coll_contract : typeref_data_contract,
				new CodeAttributeArgument ("Name", new CodePrimitiveExpression (name.Name)),
				new CodeAttributeArgument ("Namespace", new CodePrimitiveExpression (name.Namespace)));
			if (collectionArgs != null) {
				if (collectionArgs.Length > 0)
					dca.Arguments.Add (new CodeAttributeArgument ("ItemName", new CodePrimitiveExpression (CodeIdentifier.MakeValid (collectionArgs [0].QualifiedName.Name))));
				if (collectionArgs.Length > 2) {
					dca.Arguments.Add (new CodeAttributeArgument ("KeyName", new CodePrimitiveExpression (CodeIdentifier.MakeValid (collectionArgs [1].QualifiedName.Name))));
					dca.Arguments.Add (new CodeAttributeArgument ("ValueName", new CodePrimitiveExpression (CodeIdentifier.MakeValid (collectionArgs [2].QualifiedName.Name))));
				}
			}
			if (ct != null && ct.AttributeUses [new XmlQualifiedName ("Ref", KnownTypeCollection.MSSimpleNamespace)] != null)
				dca.Arguments.Add (new CodeAttributeArgument ("IsReference", new CodePrimitiveExpression (true)));
			td.CustomAttributes.Add (dca);

			// optional [Serializable]
			if (Options != null && Options.GenerateSerializable)
				td.CustomAttributes.Add (new CodeAttributeDeclaration ("System.SerializableAttribute"));
		}