{"record":{"id":"cad1c2529bb62cd9","repo":"dotnet/wpf","slug":"argumentnullexception-nameof-assemblynames","errorCode":null,"errorMessage":"ArgumentNullException(nameof(assemblyNames))","messagePattern":"ArgumentNullException\\(nameof\\(assemblyNames\\)\\)","errorType":"validation","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Markup/XamlTypeMapper.cs","lineNumber":55,"sourceCode":"    internal class XamlTypeMapper\n#else\n    public partial class XamlTypeMapper\n#endif\n    {\n#region Public\n\n#region Methods\n\n#if !PBTCOMPILER\n        /// <summary>\n        /// Constructor\n        /// </summary>\n        /// <param name=\"assemblyNames\">Assemblies XamlTypeMapper should use when resolving XAML</param>\n        public XamlTypeMapper(string[] assemblyNames)\n        {\n            if(null == assemblyNames)\n            {\n                throw new ArgumentNullException( nameof(assemblyNames));\n            }\n\n            _assemblyNames = assemblyNames;\n            _namespaceMaps = null;\n        }\n#endif\n\n        /// <summary>\n        /// Constructor\n        /// </summary>\n        /// <param name=\"assemblyNames\">Assemblies XamlTypeMapper should use when resolving XAML</param>\n        /// <param name=\"namespaceMaps\">NamespaceMap the XamlTypeMapper should use when resolving XAML</param>\n        public XamlTypeMapper(\n            string[] assemblyNames,\n            NamespaceMapEntry[] namespaceMaps)\n        {\n            if(null == assemblyNames)\n            {","sourceCodeStart":37,"sourceCodeEnd":73,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Markup/XamlTypeMapper.cs#L37-L73","documentation":"The XamlTypeMapper(string[] assemblyNames) constructor validates its required argument and throws ArgumentNullException when assemblyNames is null. The mapper needs a list of assemblies to resolve XAML namespace/types, so a null list is rejected immediately at construction.","triggerScenarios":"Calling new XamlTypeMapper(null), typically when the assembly list is built dynamically (e.g. from configuration) and the source collection came back null. Source: XamlTypeMapper.cs:55-60.","commonSituations":"Config or app-settings lookups returning null for the assembly list; refactoring that drops a default array; dependency-injection wiring where a null collection is passed through; code paths compiled under the conditional #if block where the ctor is available.","solutions":["Pass a non-null string array, e.g. new XamlTypeMapper(Array.Empty<string>()) if no assemblies are needed.","Null-check the value feeding the constructor and provide a default assembly list before calling it.","Fix the configuration/source so the assembly-names collection is populated.","Wrap construction in try/catch for ArgumentNullException to surface a clearer diagnostic in plug-in scenarios."],"exampleFix":"// before\nvar mapper = new XamlTypeMapper(GetAssemblyNamesFromConfig()); // null -> ArgumentNullException\n// after\nstring[] assemblies = GetAssemblyNamesFromConfig() ?? new[] { typeof(Window).Assembly.FullName };\nvar mapper = new XamlTypeMapper(assemblies);","handlingStrategy":"validation","validationCode":"if (assemblyNames is null)\n    throw new ArgumentException(\"assemblyNames must not be null; pass an empty array if none.\", nameof(assemblyNames));\nvar mapper = new System.Windows.Markup.XamlTypeMapper(assemblyNames);","typeGuard":"static bool IsValidAssemblyNames(string[] names) => names != null;","tryCatchPattern":"try { var mapper = new XamlTypeMapper(assemblyNames); }\ncatch (ArgumentNullException ex) { /* log ex.ParamName and supply defaults */ }","preventionTips":["Null-check collections sourced from configuration before passing them to constructors.","Default to Array.Empty<string>() rather than null when a list may be absent.","Validate DI-provided or config-provided arrays at the composition boundary.","Use ArgumentNullException.ThrowIfNull on your own inputs early to fail fast with clear diagnostics."],"tags":["wpf","xaml","argument-null","constructor"],"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"}