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

◆ XmlSerializer() [8/9]

System.Xml.Serialization.XmlSerializer.XmlSerializer ( Type type,
string? defaultNamespace )
inline

Definition at line 245 of file XmlSerializer.cs.

246 {
247 if (type == null)
248 {
249 throw new ArgumentNullException("type");
250 }
251 DefaultNamespace = defaultNamespace;
252 _rootType = type;
253 _mapping = GetKnownMapping(type, defaultNamespace);
254 if (_mapping != null)
255 {
257 }
258 else
259 {
260 if (Mode == SerializationMode.ReflectionOnly)
261 {
262 return;
263 }
264 _tempAssembly = s_cache[defaultNamespace, type];
265 if (_tempAssembly == null)
266 {
267 lock (s_cache)
268 {
269 _tempAssembly = s_cache[defaultNamespace, type];
270 if (_tempAssembly == null)
271 {
272 XmlSerializerImplementation contract = null;
273 Assembly assembly = TempAssembly.LoadGeneratedAssembly(type, defaultNamespace, out contract);
274 if (assembly == null)
275 {
276 if (Mode == SerializationMode.PreGenOnly)
277 {
278 AssemblyName name = type.Assembly.GetName();
279 string tempAssemblyName = Compiler.GetTempAssemblyName(name, defaultNamespace);
281 }
282 XmlReflectionImporter xmlReflectionImporter = new XmlReflectionImporter(defaultNamespace);
283 _mapping = xmlReflectionImporter.ImportTypeMapping(type, null, defaultNamespace);
284 _tempAssembly = GenerateTempAssembly(_mapping, type, defaultNamespace);
285 }
286 else
287 {
288 _mapping = XmlReflectionImporter.GetTopLevelMapping(type, defaultNamespace);
289 _tempAssembly = new TempAssembly(new XmlMapping[1] { _mapping }, assembly, contract);
290 }
291 }
292 s_cache.Add(defaultNamespace, type, _tempAssembly);
293 }
294 }
295 if (_mapping == null)
296 {
297 _mapping = XmlReflectionImporter.GetTopLevelMapping(type, defaultNamespace);
298 }
299 }
300 }
static string FailLoadAssemblyUnderPregenMode
Definition SR.cs:2146
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
Definition SR.cs:7
static XmlTypeMapping GetKnownMapping(Type type, string ns)
static readonly TempAssemblyCache s_cache
static TempAssembly GenerateTempAssembly(XmlMapping xmlMapping)

References System.Xml.Serialization.XmlSerializer._mapping, System.Xml.Serialization.XmlSerializer._primitiveType, System.Xml.Serialization.XmlSerializer._rootType, System.Xml.Serialization.XmlSerializer._tempAssembly, System.Xml.Serialization.XmlSerializer.DefaultNamespace, System.Xml.Dictionary, System.SR.FailLoadAssemblyUnderPregenMode, System.SR.Format(), System.Xml.Serialization.XmlSerializer.GenerateTempAssembly(), System.Xml.Serialization.XmlSerializer.GetKnownMapping(), System.Xml.Serialization.Compiler.GetTempAssemblyName(), System.Xml.Serialization.XmlReflectionImporter.GetTopLevelMapping(), System.Xml.Serialization.TempAssembly.LoadGeneratedAssembly(), System.Xml.Serialization.XmlSerializer.s_cache, and System.type.