{"record":{"id":"0d835500e8f9c5dc","repo":"dotnet/wpf","slug":"throw-new-argumentnullexception-nameof-assemblyname","errorCode":null,"errorMessage":"throw new ArgumentNullException(nameof(assemblyName));","messagePattern":"throw new ArgumentNullException\\(nameof\\(assemblyName\\)\\);","errorType":"exception","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Markup/XamlTypeMapper.cs","lineNumber":4233,"sourceCode":"        /// NamespaceMapEntry default constructor\n        ///</summary>\n        public NamespaceMapEntry()\n        {\n        }\n\n        /// <summary>\n        /// Constructor\n        /// </summary>\n        /// <param name=\"xmlNamespace\">The XML NamespaceURi</param>\n        /// <param name=\"assemblyName\">Assembly to use when resolving a Tag</param>\n        /// <param name=\"clrNamespace\">Namespace within the assembly</param>\n        public NamespaceMapEntry(string xmlNamespace,string assemblyName,string clrNamespace)\n        {\n            if (xmlNamespace == null)\n                throw new ArgumentNullException(nameof(xmlNamespace));\n\n            if (assemblyName == null)\n                throw new ArgumentNullException(nameof(assemblyName));\n\n            if (clrNamespace == null)\n                throw new ArgumentNullException(nameof(clrNamespace));\n\n            _xmlNamespace = xmlNamespace;\n            _assemblyName = assemblyName;\n            _clrNamespace = clrNamespace;\n        }\n\n        /// <summary>\n        /// Constructor\n        /// </summary>\n        /// <param name=\"xmlNamespace\">The XML NamespaceURi</param>\n        /// <param name=\"assemblyName\">Assembly to use when resolving a Tag</param>\n        /// <param name=\"clrNamespace\">Namespace within the assembly</param>\n        /// <param name=\"assemblyPath\">Path to use when loading assembly.  This may be null.</param>\n         internal NamespaceMapEntry(\n                string xmlNamespace,","sourceCodeStart":4215,"sourceCodeEnd":4251,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Markup/XamlTypeMapper.cs#L4215-L4251","documentation":"The NamespaceMapEntry constructor throws ArgumentNullException when assemblyName is null. The assembly name is required to locate the CLR types that back the mapped XML namespace, so a null value makes the entry unusable.","triggerScenarios":"Constructing new NamespaceMapEntry(xmlNamespace, null, clrNamespace) — often when the assembly name is derived from a mapping instruction or config entry that was missing.","commonSituations":"Designer/tooling code registering namespace maps from <?Mapping ...?> data with missing Assembly= attributes; assembly renames leaving old mapping metadata pointing at nothing.","solutions":["Pass the assembly's simple name string as the second constructor argument","Derive the name via Assembly.GetName().Name when only an Assembly object is available","Validate the mapping instruction/config entry contains an Assembly value before constructing"],"exampleFix":"// before\nvar map = new NamespaceMapEntry(nsUri, mappingInfo.Assembly, clrNs); // may be null\n// after\nstring asmName = mappingInfo.Assembly ?? typeof(KnownType).Assembly.GetName().Name;\nvar map = new NamespaceMapEntry(nsUri, asmName, clrNs);","handlingStrategy":"validation","validationCode":"if (string.IsNullOrEmpty(assemblyName))\n    assemblyName = typeof(FrameworkElement).Assembly.GetName().Name; // or explicit failure\nvar entry = new NamespaceMapEntry(xmlNamespace, assemblyName, clrNamespace);","typeGuard":"bool HasAssemblyName(string assemblyName) => !string.IsNullOrEmpty(assemblyName);","tryCatchPattern":"try\n{\n    var entry = new NamespaceMapEntry(xmlNamespace, assemblyName, clrNamespace);\n}\ncatch (ArgumentNullException ex) when (ex.ParamName == \"assemblyName\")\n{\n    log.LogError(ex, \"Mapping for {Ns} lacks an Assembly attribute\", xmlNamespace);\n}","preventionTips":["Ensure <?Mapping ...?> or config entries always include Assembly=","Use Assembly.GetName().Name instead of hand-written names","Check for assembly renames when migrating mapping metadata"],"tags":["wpf","xaml","argument-null","namespace-map"],"backgroundTag":"null-argument","analyzedSha":"81131a70a4c573cd62748a5c36908fc4d662daa9","analyzedAt":"2026-09-14T10:12:48.479Z","contentChangedAt":"2026-09-14T10:12:48.479Z","schemaVersion":2},"datasetVersion":"2026-09-21T21:30:21.729Z"}