Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ WriteMemberBegin()

void System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteMemberBegin ( Member[] members)
inlineprivate

Definition at line 1925 of file XmlSerializationReaderCodeGen.cs.

1926 {
1927 foreach (Member member in members)
1928 {
1929 if (!member.IsArrayLike)
1930 {
1931 continue;
1932 }
1933 string arrayName = member.ArrayName;
1934 string s = "c" + arrayName;
1935 TypeDesc typeDesc = member.Mapping.TypeDesc;
1936 string cSharpName = typeDesc.CSharpName;
1937 if (member.Mapping.TypeDesc.IsArray)
1938 {
1939 WriteArrayLocalDecl(typeDesc.CSharpName, arrayName, "null", typeDesc);
1940 base.Writer.Write("int ");
1941 base.Writer.Write(s);
1942 base.Writer.WriteLine(" = 0;");
1943 if (member.Mapping.ChoiceIdentifier != null)
1944 {
1945 WriteArrayLocalDecl(member.Mapping.ChoiceIdentifier.Mapping.TypeDesc.CSharpName + "[]", member.ChoiceArrayName, "null", member.Mapping.ChoiceIdentifier.Mapping.TypeDesc);
1946 base.Writer.Write("int c");
1947 base.Writer.Write(member.ChoiceArrayName);
1948 base.Writer.WriteLine(" = 0;");
1949 }
1950 continue;
1951 }
1952 bool useReflection = typeDesc.UseReflection;
1953 if (member.Source[member.Source.Length - 1] == '(' || member.Source[member.Source.Length - 1] == '{')
1954 {
1956 base.Writer.Write(member.Source);
1957 base.Writer.Write(arrayName);
1958 if (member.Source[member.Source.Length - 1] == '{')
1959 {
1960 base.Writer.WriteLine("});");
1961 }
1962 else
1963 {
1964 base.Writer.WriteLine(");");
1965 }
1966 continue;
1967 }
1968 if (member.IsList && !member.Mapping.ReadOnly && member.Mapping.TypeDesc.IsNullable)
1969 {
1970 base.Writer.Write("if ((object)(");
1971 base.Writer.Write(member.Source);
1972 base.Writer.Write(") == null) ");
1973 if (!member.Mapping.TypeDesc.HasDefaultConstructor)
1974 {
1975 base.Writer.Write("throw CreateReadOnlyCollectionException(");
1976 WriteQuotedCSharpString(member.Mapping.TypeDesc.CSharpName);
1977 base.Writer.WriteLine(");");
1978 }
1979 else
1980 {
1981 base.Writer.Write(member.Source);
1982 base.Writer.Write(" = ");
1983 base.Writer.Write(base.RaCodeGen.GetStringForCreateInstance(cSharpName, useReflection, typeDesc.CannotNew, cast: true));
1984 base.Writer.WriteLine(";");
1985 }
1986 }
1988 }
1989 }
void WriteLocalDecl(string typeFullName, string variableName, string initValue, bool useReflection)
void WriteCreateInstance(string escapedName, string source, bool useReflection, bool ctorInaccessible)
void WriteArrayLocalDecl(string typeName, string variableName, string initValue, TypeDesc arrayTypeDesc)

References System.Xml.Serialization.XmlSerializationReaderCodeGen.Member.ArrayName, System.Xml.Serialization.XmlSerializationReaderCodeGen.Member.ChoiceArrayName, System.Xml.Serialization.AccessorMapping.ChoiceIdentifier, System.Xml.Serialization.TypeDesc.CSharpName, System.Xml.Dictionary, System.Xml.Serialization.TypeDesc.HasDefaultConstructor, System.Xml.Serialization.TypeDesc.IsArray, System.Xml.Serialization.XmlSerializationReaderCodeGen.Member.IsArrayLike, System.Xml.Serialization.XmlSerializationReaderCodeGen.Member.IsList, System.Xml.Serialization.TypeDesc.IsNullable, System.Xml.Serialization.Accessor.Mapping, System.Xml.Serialization.XmlSerializationReaderCodeGen.Member.Mapping, System.Xml.Serialization.MemberMapping.ReadOnly, System.s, System.Xml.Serialization.XmlSerializationReaderCodeGen.Member.Source, System.Xml.Serialization.AccessorMapping.TypeDesc, System.Xml.Serialization.TypeMapping.TypeDesc, System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteArrayLocalDecl(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteCreateInstance(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteLocalDecl(), and System.Xml.Serialization.XmlSerializationCodeGen.WriteQuotedCSharpString().

Referenced by System.Xml.Serialization.XmlSerializationReaderCodeGen.GenerateLiteralMembersElement(), System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteArray(), and System.Xml.Serialization.XmlSerializationReaderCodeGen.WriteLiteralStructMethod().