customerschemaimporterextension.cs

来自「《ASP.NET 2.0 XML 高级编程(第3版)》 《ASP.NET 2.」· CS 代码 · 共 61 行

CS
61
字号
using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Collections;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;
using System.Xml.Serialization.Advanced;

namespace SchemaImporterExtensionsLib
{
	public sealed class CustomerSchemaImporterExtension : SchemaImporterExtension
	{
		public override string ImportSchemaType(string name, string ns, XmlSchemaObject context,
			XmlSchemas schemas, XmlSchemaImporter importer, CodeCompileUnit compileUnit,
			CodeNamespace mainNamespace,CodeGenerationOptions options, CodeDomProvider codeProvider)
		{
			if (name.Equals("Customer") && ns.Equals("urn:wrox-com"))
			{
				CodeTypeDeclaration customer = new CodeTypeDeclaration("Customer");
				mainNamespace.Types.Add(customer);

				CodeMemberField firstNameField = new CodeMemberField(
					new CodeTypeReference(typeof(string)),"_firstName");
				customer.Members.Add(firstNameField);

				CodeMemberProperty firstNameProperty = new CodeMemberProperty();
				firstNameProperty.Attributes = MemberAttributes.Public | MemberAttributes.Final;
				firstNameProperty.GetStatements.Add(new CodeMethodReturnStatement(
						new CodeFieldReferenceExpression(new
						CodeThisReferenceExpression(), "_firstName")));
				firstNameProperty.Name = "FirstName";
				firstNameProperty.SetStatements.Add(new CodeAssignStatement(						
					new CodeFieldReferenceExpression(new CodeThisReferenceExpression(),"_firstName"),
						new CodePropertySetValueReferenceExpression()));
				firstNameProperty.Type = new CodeTypeReference(typeof(string));
				customer.Members.Add(firstNameProperty);

				CodeMemberField lastNameField = new CodeMemberField(
						new CodeTypeReference(typeof(string)),"_lastName");
				customer.Members.Add(lastNameField);

				CodeMemberProperty lastNameProperty = new CodeMemberProperty();
				lastNameProperty.Attributes = MemberAttributes.Public | MemberAttributes.Final;
				lastNameProperty.GetStatements.Add(new CodeMethodReturnStatement(
						new CodeFieldReferenceExpression(
						new CodeThisReferenceExpression(),"_lastName")));
				lastNameProperty.Name = "LastName";
				lastNameProperty.SetStatements.Add(new CodeAssignStatement(
						new CodeFieldReferenceExpression(
						new CodeThisReferenceExpression(),"_lastName"),
						new CodePropertySetValueReferenceExpression()));
				lastNameProperty.Type = new CodeTypeReference(typeof(string));
				customer.Members.Add(lastNameProperty);
				return "Customer";
			}
			return null;
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?