EllanJiang/GameFramework · error · GameFrameworkException

Data provider helper is invalid.

Error message

Data provider helper is invalid.

What it means

Thrown by DataTableManager.SetDataProviderHelper when the supplied IDataProviderHelper<DataTableBase> is null. This helper supplies table data to DataTableBase instances, so the manager rejects a null helper during setup.

Solutions

  1. Instantiate and register a valid IDataProviderHelper<DataTableBase> before calling.
  2. Ensure framework initialization order: helper set before any table is loaded.
  3. Verify the helper instance is actually constructed, not just declared.

Example fix

// before
dataTableManager.SetDataProviderHelper(null);
// after
m_DataProviderHelper = new DataTableDataProviderHelper();
dataTableManager.SetDataProviderHelper(m_DataProviderHelper);
Defensive patterns

Strategy: type-guard

Validate before calling

if (helper != null) dataTableManager.SetDataProviderHelper(helper);

Type guard

bool IsValidProviderHelper(IDataProviderHelper<DataTableBase> h) => h != null;

Try / catch

try { dataTableManager.SetDataProviderHelper(helper); } catch (GameFrameworkException ex) when (ex.Message.Contains("Data provider helper")) { /* register helper */ }

Prevention

When it happens

Trigger: Calling SetDataProviderHelper(null), or passing an uninitialized helper field/property.

Common situations: Custom data provider helper not registered before use; component initialization order wrong; DI resolving to null.

Related errors


AI-assisted analysis of EllanJiang/GameFramework@d0c010b051 (2026-09-15). Data as JSON: /api/errors/78adcd0c4caf7fd4. Report an issue: GitHub.

Appendix: source

Thrown at GameFramework/DataTable/DataTableManager.cs:101

        public void SetResourceManager(IResourceManager resourceManager)
        {
            if (resourceManager == null)
            {
                throw new GameFrameworkException("Resource manager is invalid.");
            }

            m_ResourceManager = resourceManager;
        }

        /// <summary>
        /// 设置数据表数据提供者辅助器。
        /// </summary>
        /// <param name="dataProviderHelper">数据表数据提供者辅助器。</param>
        public void SetDataProviderHelper(IDataProviderHelper<DataTableBase> dataProviderHelper)
        {
            if (dataProviderHelper == null)
            {
                throw new GameFrameworkException("Data provider helper is invalid.");
            }

            m_DataProviderHelper = dataProviderHelper;
        }

        /// <summary>
        /// 设置数据表辅助器。
        /// </summary>
        /// <param name="dataTableHelper">数据表辅助器。</param>
        public void SetDataTableHelper(IDataTableHelper dataTableHelper)
        {
            if (dataTableHelper == null)
            {
                throw new GameFrameworkException("Data table helper is invalid.");
            }

            m_DataTableHelper = dataTableHelper;
        }

View on GitHub (pinned to d0c010b051)