{"record":{"id":"77f7e2b15dcf88bc","repo":"dotnet/wpf","slug":"sr-transformstackvalid","errorCode":null,"errorMessage":"SR.TransformStackValid","messagePattern":"SR\\.TransformStackValid","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/WindowsBase/System/IO/Packaging/CompoundFile/DataSpaceManager.cs","lineNumber":578,"sourceCode":"\n            throw new ObjectDisposedException(null, SR.DataSpaceManagerDisposed);\n        }\n    }\n\n    /// <summary>\n    /// Define a data space with the given stack of transform objects and\n    /// labeled with the given name.  The transform stack is interpreted in\n    /// bottom-up order.  (Clear-text transform is last.)\n    /// </summary>\n    /// <param name=\"transformStack\">Transform stack</param>\n    /// <param name=\"newDataSpaceLabel\">New data space label</param>\n    internal void DefineDataSpace( string[] transformStack, string newDataSpaceLabel )\n    {\n        CheckDisposedStatus();\n        // Data space must have at least one transform\n        if( null == transformStack ||\n            0 == transformStack.Length )\n            throw new ArgumentException(\n                SR.TransformStackValid);\n\n        // Given label must be a non-empty string\n        CU.CheckStringAgainstNullAndEmpty(newDataSpaceLabel, \"newDataSpaceLabel\");\n\n        // Given label must not be a reserved string\n        CU.CheckStringAgainstReservedName(newDataSpaceLabel, \"newDataSpaceLabel\");\n\n        // Given label must not already be in use\n        if( DataSpaceIsDefined( newDataSpaceLabel ) )\n            throw new ArgumentException(\n                SR.DataSpaceLabelInUse);\n\n        // Given transform array must include labels that have already been defined\n        foreach( string transformLabel in transformStack )\n        {\n            CU.CheckStringAgainstNullAndEmpty( transformLabel, \"Transform label\" );\n","sourceCodeStart":560,"sourceCodeEnd":596,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/IO/Packaging/CompoundFile/DataSpaceManager.cs#L560-L596","documentation":"DataSpaceManager.DefineDataSpace throws ArgumentException with message SR.TransformStackValid when the transformStack argument is null or empty. A data space must be defined with at least one transform in its stack.","triggerScenarios":"Calling DefineDataSpace(null, label) or DefineDataSpace(new string[0], label).","commonSituations":"Constructing a transform stack programmatically where the list ends up empty because no transforms were configured (e.g. no encryption/integrity transform names loaded from settings).","solutions":["Pass at least one valid, previously defined transform label in transformStack.","Guard the call: if (stack == null || stack.Length == 0) define the required transform first via DefineTransform.","Fix configuration so the required transform names are present before data-space definition."],"exampleFix":"// before\nmanager.DefineDataSpace(new string[0], \"MyDataSpace\"); // throws\n// after\nmanager.DefineDataSpace(new[] { \"Transform.Compression\" }, \"MyDataSpace\");","handlingStrategy":"validation","validationCode":"if (transformStack == null || transformStack.Length == 0) throw new ArgumentException(\"A data space requires at least one transform.\");","typeGuard":"bool HasTransforms(string[] s) => s != null && s.Length > 0;","tryCatchPattern":"try { manager.DefineDataSpace(stack, label); } catch (ArgumentException) { /* supply a valid transform stack */ }","preventionTips":["Ensure transforms are defined before defining data spaces","Validate config-driven transform lists for emptiness"],"tags":["wpf","packaging","argumentexception","compoundfile","dataspace"],"backgroundTag":"missing-required-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"}