System.Runtime.Serialization.XsdDataContractImporter.AddProperty C# (CSharp) Method

AddProperty() private method

private AddProperty ( CodeTypeDeclaration td, XmlSchemaElement xe ) : void
td System.CodeDom.CodeTypeDeclaration
xe System.Xml.Schema.XmlSchemaElement
return void
		void AddProperty (CodeTypeDeclaration td, XmlSchemaElement xe)
		{
			var att = GenerateInternal ? MemberAttributes.Assembly : MemberAttributes.Public;
			var fi = new CodeMemberField () { Name = CodeIdentifier.MakeValid (xe.QualifiedName.Name + "Field"), Type = GetCodeTypeReference (xe.ElementSchemaType.QualifiedName, xe) };
			td.Members.Add (fi);
			var pi = new CodeMemberProperty () { Name = xe.QualifiedName.Name, Attributes = att, HasGet = true, HasSet = true, Type = fi.Type };
			// [DataMember(Name=foobar, IsRequired=!nillable)]
			var dma = new CodeAttributeDeclaration (
				new CodeTypeReference (typeof (DataMemberAttribute)));
			if (fi.Name != xe.QualifiedName.Name)
				new CodeAttributeArgument ("Name", new CodePrimitiveExpression (xe.QualifiedName.Name));
			if (!xe.IsNillable)
				new CodeAttributeArgument ("IsRequired", new CodePrimitiveExpression (true));
			pi.CustomAttributes.Add (dma);

			pi.GetStatements.Add (new CodeMethodReturnStatement () { Expression = new CodeFieldReferenceExpression (this_expr, fi.Name) });
			pi.SetStatements.Add (new CodeAssignStatement (new CodeFieldReferenceExpression (this_expr, fi.Name), arg_value_expr));


			td.Members.Add (pi);
		}