protected CodeExpression GetSchemaDatatypeExpression() { CodeTypeReferenceExpression codeTypeReferenceExpression = CodeDomHelper.CreateTypeReferenceExp("XmlSchemaType"); CodeExpression[] codeExpressionArray = new CodeExpression[] { CodeDomHelper.CreateFieldReference("XmlTypeCode", this.typeRef.TypeCodeString) }; CodeExpression codeFieldReferenceExpression = new CodeFieldReferenceExpression(CodeDomHelper.CreateMethodCall(codeTypeReferenceExpression, "GetBuiltInSimpleType", codeExpressionArray), "Datatype"); return(codeFieldReferenceExpression); }
private void AddGetStatements(CodeStatementCollection getStatements) { CodeExpression[] simpleTypeClassExpression; if (!this.IsSubstitutionHead) { CodeExpression returnExp = null; if (this.FixedValue == null) { getStatements.Add(this.GetValueMethodCall()); this.CheckOccurrence(getStatements); CodeVariableReferenceExpression returnValueExp = new CodeVariableReferenceExpression("x"); if ((this.IsRef ? true : !this.typeRef.IsSimpleType)) { returnExp = new CodeCastExpression(this.ReturnType, returnValueExp); } else { CodeTypeReference parseType = this.ReturnType; if ((!this.typeRef.IsValueType ? false : this.IsNullable)) { parseType = new CodeTypeReference(this.clrTypeName); } if (!this.IsUnion) { string parseMethodName = null; CodeExpression simpleTypeExpression = this.GetSchemaDatatypeExpression(); if (!this.IsSchemaList) { parseMethodName = "ParseValue"; } else { parseMethodName = "ParseListValue"; parseType = new CodeTypeReference(this.clrTypeName); } CodeTypeReferenceExpression codeTypeReferenceExpression = CodeDomHelper.CreateTypeReferenceExp("XTypedServices"); simpleTypeClassExpression = new CodeExpression[] { returnValueExp, simpleTypeExpression }; returnExp = CodeDomHelper.CreateGenericMethodCall(codeTypeReferenceExpression, parseMethodName, parseType, simpleTypeClassExpression); if (this.DefaultValue != null) { ((CodeMethodInvokeExpression)returnExp).Parameters.Add(new CodeFieldReferenceExpression(null, NameGenerator.ChangeClrName(this.propertyName, NameOptions.MakeDefaultValueField))); } } else { CodeTypeReferenceExpression codeTypeReferenceExpression1 = CodeDomHelper.CreateTypeReferenceExp("XTypedServices"); simpleTypeClassExpression = new CodeExpression[] { returnValueExp, this.GetSimpleTypeClassExpression() }; returnExp = CodeDomHelper.CreateMethodCall(codeTypeReferenceExpression1, "ParseUnionValue", simpleTypeClassExpression); } } getStatements.Add(new CodeMethodReturnStatement(returnExp)); } else { getStatements.Add(new CodeMethodReturnStatement(new CodeFieldReferenceExpression(null, NameGenerator.ChangeClrName(this.propertyName, NameOptions.MakeFixedValueField)))); } } else { this.AddSubstGetStatements(getStatements); } }