本文整理汇总了C#中System.Xml.Serialization.StructMapping.HasExplicitSequence方法的典型用法代码示例。如果您正苦于以下问题:C# StructMapping.HasExplicitSequence方法的具体用法?C# StructMapping.HasExplicitSequence怎么用?C# StructMapping.HasExplicitSequence使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Xml.Serialization.StructMapping
的用法示例。
在下文中一共展示了StructMapping.HasExplicitSequence方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: WriteLiteralStructMethod
//.........这里部分代码省略.........
CodeGenerator.InstanceBindingFlags,
null,
new Type[] { typeof(String), typeof(String) },
null
);
ilg.Ldarg(0);
ilg.Ldstr(structMapping.TypeName);
ilg.Ldstr(structMapping.Namespace);
ilg.Call(XmlSerializationReader_CreateAbstractTypeException);
ilg.Throw();
}
else {
if (structMapping.TypeDesc.Type != null && typeof(XmlSchemaObject).IsAssignableFrom(structMapping.TypeDesc.Type)) {
MethodInfo XmlSerializationReader_set_DecodeName = typeof(XmlSerializationReader).GetMethod(
"set_DecodeName",
CodeGenerator.InstanceBindingFlags,
null,
new Type[] { typeof(Boolean) },
null
);
ilg.Ldarg(0);
ilg.Ldc(false);
ilg.Call(XmlSerializationReader_set_DecodeName);
}
WriteCreateMapping(structMapping, "o");
LocalBuilder oLoc = ilg.GetLocal("o");
// this method populates the memberInfos dictionary based on the structMapping
MemberMapping[] mappings = TypeScope.GetSettableMembers(structMapping, memberInfos);
Member anyText = null;
Member anyElement = null;
Member anyAttribute = null;
bool isSequence = structMapping.HasExplicitSequence();
ArrayList arraysToDeclareList = new ArrayList(mappings.Length);
ArrayList arraysToSetList = new ArrayList(mappings.Length);
ArrayList allMembersList = new ArrayList(mappings.Length);
for (int i = 0; i < mappings.Length; i++) {
MemberMapping mapping = mappings[i];
CodeIdentifier.CheckValidIdentifier(mapping.Name);
string source = RaCodeGen.GetStringForMember("o", mapping.Name, structMapping.TypeDesc);
Member member = new Member(this, source, "a", i, mapping, GetChoiceIdentifierSource(mapping, "o", structMapping.TypeDesc));
if (!mapping.IsSequence)
member.ParamsReadSource = "paramsRead[" + i.ToString(CultureInfo.InvariantCulture) + "]";
member.IsNullable = mapping.TypeDesc.IsNullable;
if (mapping.CheckSpecified == SpecifiedAccessor.ReadWrite)
member.CheckSpecifiedSource = RaCodeGen.GetStringForMember("o", mapping.Name + "Specified", structMapping.TypeDesc);
if (mapping.Text != null)
anyText = member;
if (mapping.Attribute != null && mapping.Attribute.Any)
anyAttribute = member;
if (!isSequence) {
// find anyElement if present.
for (int j = 0; j < mapping.Elements.Length; j++) {
if (mapping.Elements[j].Any && (mapping.Elements[j].Name == null || mapping.Elements[j].Name.Length == 0)) {
anyElement = member;
break;
}
}
}
else if (mapping.IsParticle && !mapping.IsSequence) {
StructMapping declaringMapping;
structMapping.FindDeclaringMapping(mapping, out declaringMapping, structMapping.TypeName);
throw new InvalidOperationException(Res.GetString(Res.XmlSequenceHierarchy, structMapping.TypeDesc.FullName, mapping.Name, declaringMapping.TypeDesc.FullName, "Order"));
示例2: WriteLiteralStructMethod
void WriteLiteralStructMethod(StructMapping structMapping) {
string methodName = (string)MethodNames[structMapping];
bool useReflection = structMapping.TypeDesc.UseReflection;
string typeName = useReflection ? "object" : structMapping.TypeDesc.CSharpName;
Writer.WriteLine();
Writer.Write(typeName);
Writer.Write(" ");
Writer.Write(methodName);
Writer.Write("(");
if (structMapping.TypeDesc.IsNullable)
Writer.Write("bool isNullable, ");
Writer.WriteLine("bool checkType) {");
Writer.Indent++;
Writer.Write(typeof(XmlQualifiedName).FullName);
Writer.WriteLine(" xsiType = checkType ? GetXsiType() : null;");
Writer.WriteLine("bool isNull = false;");
if (structMapping.TypeDesc.IsNullable)
Writer.WriteLine("if (isNullable) isNull = ReadNull();");
Writer.WriteLine("if (checkType) {");
if (structMapping.TypeDesc.IsRoot) {
Writer.Indent++;
Writer.WriteLine("if (isNull) {");
Writer.Indent++;
Writer.WriteLine("if (xsiType != null) return (" + typeName + ")ReadTypedNull(xsiType);");
Writer.Write("else return ");
if (structMapping.TypeDesc.IsValueType) {
Writer.Write(RaCodeGen.GetStringForCreateInstance(structMapping.TypeDesc.CSharpName, useReflection, false, false));
Writer.WriteLine(";");
}
else
Writer.WriteLine("null;");
Writer.Indent--;
Writer.WriteLine("}");
}
Writer.Write("if (xsiType == null");
if (!structMapping.TypeDesc.IsRoot) {
Writer.Write(" || ");
WriteQNameEqual("xsiType", structMapping.TypeName, structMapping.Namespace);
}
Writer.WriteLine(") {");
if (structMapping.TypeDesc.IsRoot) {
Writer.Indent++;
Writer.WriteLine("return ReadTypedPrimitive(new System.Xml.XmlQualifiedName(\"" + Soap.UrType + "\", \"" + XmlSchema.Namespace + "\"));");
Writer.Indent--;
}
Writer.WriteLine("}");
WriteDerivedTypes(structMapping, !useReflection && !structMapping.TypeDesc.IsRoot, typeName);
if (structMapping.TypeDesc.IsRoot) WriteEnumAndArrayTypes();
Writer.WriteLine("else");
Writer.Indent++;
if (structMapping.TypeDesc.IsRoot)
Writer.Write("return ReadTypedPrimitive((");
else
Writer.Write("throw CreateUnknownTypeException((");
Writer.Write(typeof(XmlQualifiedName).FullName);
Writer.WriteLine(")xsiType);");
Writer.Indent--;
Writer.WriteLine("}");
if (structMapping.TypeDesc.IsNullable)
Writer.WriteLine("if (isNull) return null;");
if (structMapping.TypeDesc.IsAbstract) {
Writer.Write("throw CreateAbstractTypeException(");
WriteQuotedCSharpString(structMapping.TypeName);
Writer.Write(", ");
WriteQuotedCSharpString(structMapping.Namespace);
Writer.WriteLine(");");
}
else {
if (structMapping.TypeDesc.Type != null && typeof(XmlSchemaObject).IsAssignableFrom(structMapping.TypeDesc.Type)) {
Writer.WriteLine("DecodeName = false;");
}
WriteCreateMapping(structMapping, "o");
MemberMapping[] mappings = TypeScope.GetSettableMembers(structMapping);
Member anyText = null;
Member anyElement = null;
Member anyAttribute = null;
bool isSequence = structMapping.HasExplicitSequence();
ArrayList arraysToDeclareList = new ArrayList(mappings.Length);
ArrayList arraysToSetList = new ArrayList(mappings.Length);
ArrayList allMembersList = new ArrayList(mappings.Length);
for (int i = 0; i < mappings.Length; i++) {
MemberMapping mapping = mappings[i];
CodeIdentifier.CheckValidIdentifier(mapping.Name);
string source = RaCodeGen.GetStringForMember("o", mapping.Name, structMapping.TypeDesc);
Member member = new Member(this, source, "a", i, mapping, GetChoiceIdentifierSource(mapping, "o", structMapping.TypeDesc));
if (!mapping.IsSequence)
member.ParamsReadSource = "paramsRead[" + i.ToString(CultureInfo.InvariantCulture) + "]";
member.IsNullable = mapping.TypeDesc.IsNullable;
if (mapping.CheckSpecified == SpecifiedAccessor.ReadWrite)
member.CheckSpecifiedSource = RaCodeGen.GetStringForMember("o", mapping.Name + "Specified", structMapping.TypeDesc);
if (mapping.Text != null)
//.........这里部分代码省略.........
示例3: WriteLiteralStructMethod
//.........这里部分代码省略.........
}
else
{
base.Writer.Write("throw CreateUnknownTypeException((");
}
base.Writer.Write(typeof(XmlQualifiedName).FullName);
base.Writer.WriteLine(")xsiType);");
IndentedWriter writer8 = base.Writer;
writer8.Indent--;
base.Writer.WriteLine("}");
if (structMapping.TypeDesc.IsNullable)
{
base.Writer.WriteLine("if (isNull) return null;");
}
if (structMapping.TypeDesc.IsAbstract)
{
base.Writer.Write("throw CreateAbstractTypeException(");
base.WriteQuotedCSharpString(structMapping.TypeName);
base.Writer.Write(", ");
base.WriteQuotedCSharpString(structMapping.Namespace);
base.Writer.WriteLine(");");
}
else
{
if ((structMapping.TypeDesc.Type != null) && typeof(XmlSchemaObject).IsAssignableFrom(structMapping.TypeDesc.Type))
{
base.Writer.WriteLine("DecodeName = false;");
}
this.WriteCreateMapping(structMapping, "o");
MemberMapping[] allMembers = TypeScope.GetAllMembers(structMapping);
Member member = null;
Member member2 = null;
Member anyAttribute = null;
bool flag2 = structMapping.HasExplicitSequence();
ArrayList list = new ArrayList(allMembers.Length);
ArrayList list2 = new ArrayList(allMembers.Length);
ArrayList list3 = new ArrayList(allMembers.Length);
for (int i = 0; i < allMembers.Length; i++)
{
MemberMapping mapping = allMembers[i];
CodeIdentifier.CheckValidIdentifier(mapping.Name);
string source = base.RaCodeGen.GetStringForMember("o", mapping.Name, structMapping.TypeDesc);
Member member4 = new Member(this, source, "a", i, mapping, this.GetChoiceIdentifierSource(mapping, "o", structMapping.TypeDesc));
if (!mapping.IsSequence)
{
member4.ParamsReadSource = "paramsRead[" + i.ToString(CultureInfo.InvariantCulture) + "]";
}
member4.IsNullable = mapping.TypeDesc.IsNullable;
if (mapping.CheckSpecified == SpecifiedAccessor.ReadWrite)
{
member4.CheckSpecifiedSource = base.RaCodeGen.GetStringForMember("o", mapping.Name + "Specified", structMapping.TypeDesc);
}
if (mapping.Text != null)
{
member = member4;
}
if ((mapping.Attribute != null) && mapping.Attribute.Any)
{
anyAttribute = member4;
}
if (!flag2)
{
for (int j = 0; j < mapping.Elements.Length; j++)
{
if (mapping.Elements[j].Any && ((mapping.Elements[j].Name == null) || (mapping.Elements[j].Name.Length == 0)))
{
开发者ID:pritesh-mandowara-sp,项目名称:DecompliedDotNetLibraries,代码行数:67,代码来源:XmlSerializationReaderCodeGen.cs