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

◆ LoadGeneratedAssembly()

static Assembly System.Xml.Serialization.TempAssembly.LoadGeneratedAssembly ( Type type,
string defaultNamespace,
out XmlSerializerImplementation contract )
inlinestaticpackage

Definition at line 122 of file TempAssembly.cs.

123 {
124 Assembly assembly = null;
125 contract = null;
126 string text = null;
127 object[] customAttributes = type.GetCustomAttributes(typeof(XmlSerializerAssemblyAttribute), inherit: false);
128 if (customAttributes.Length == 0)
129 {
130 AssemblyName name = type.Assembly.GetName();
131 text = (name.Name = Compiler.GetTempAssemblyName(name, defaultNamespace));
132 name.CodeBase = null;
134 try
135 {
136 assembly = Assembly.Load(name);
137 }
138 catch (Exception ex)
139 {
140 if (ex is OutOfMemoryException)
141 {
142 throw;
143 }
144 }
145 if ((object)assembly == null)
146 {
148 }
149 if (assembly == null)
150 {
151 if (XmlSerializer.Mode == SerializationMode.PreGenOnly)
152 {
154 }
155 return null;
156 }
157 if (!IsSerializerVersionMatch(assembly, type, defaultNamespace))
158 {
159 XmlSerializationEventSource.Log.XmlSerializerExpired(text, type.FullName);
160 return null;
161 }
162 }
163 else
164 {
165 XmlSerializerAssemblyAttribute xmlSerializerAssemblyAttribute = (XmlSerializerAssemblyAttribute)customAttributes[0];
166 if (xmlSerializerAssemblyAttribute.AssemblyName != null && xmlSerializerAssemblyAttribute.CodeBase != null)
167 {
169 }
170 if (xmlSerializerAssemblyAttribute.AssemblyName != null)
171 {
174 }
175 else if (xmlSerializerAssemblyAttribute.CodeBase != null && xmlSerializerAssemblyAttribute.CodeBase.Length > 0)
176 {
179 }
180 else
181 {
182 text = type.Assembly.FullName;
183 assembly = type.Assembly;
184 }
185 if (assembly == null)
186 {
187 throw new FileNotFoundException(null, text);
188 }
189 }
190 Type typeFromAssembly = GetTypeFromAssembly(assembly, "XmlSerializerContract");
191 contract = (XmlSerializerImplementation)Activator.CreateInstance(typeFromAssembly);
192 if (contract.CanSerialize(type))
193 {
194 return assembly;
195 }
196 return null;
197 }
static CultureInfo InvariantCulture
static Assembly Load(string assemblyString)
Definition Assembly.cs:157
static Assembly LoadFrom(string assemblyFile)
Definition Assembly.cs:588
static string FailLoadAssemblyUnderPregenMode
Definition SR.cs:2146
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
static string XmlPregenInvalidXmlSerializerAssemblyAttribute
Definition SR.cs:1794
Definition SR.cs:7
static bool IsSerializerVersionMatch(Assembly serializer, Type type, string defaultNamespace)
static Type GetTypeFromAssembly(Assembly assembly, string typeName)
static Assembly LoadAssemblyByPath(Type type, string assemblyName)

References System.Activator.CreateInstance(), System.Xml.Dictionary, System.SR.FailLoadAssemblyUnderPregenMode, System.SR.Format(), System.Xml.Serialization.Compiler.GetTempAssemblyName(), System.Xml.Serialization.TempAssembly.GetTypeFromAssembly(), System.Globalization.CultureInfo.InvariantCulture, System.Xml.Serialization.TempAssembly.IsSerializerVersionMatch(), System.Reflection.Assembly.Load(), System.Xml.Serialization.TempAssembly.LoadAssemblyByPath(), System.Reflection.Assembly.LoadFrom(), System.Xml.Serialization.XmlSerializationEventSource.Log, System.Xml.Serialization.XmlSerializer.Mode, System.text, System.type, and System.SR.XmlPregenInvalidXmlSerializerAssemblyAttribute.

Referenced by System.Xml.Serialization.XmlSerializer.XmlSerializer(), and System.Xml.Serialization.XmlSerializer.FromMappings().