logo SERENITY
Game Systems Foundation
Search Results for

    Show / Hide Table of Contents

    Class SerenitySystemConfigurationResolver

    Resolves where each SerenityInstallableSystem's settings asset currently stands: missing, shipped inside the package, authored in the user's project, or invalid (ambiguous, or carrying a broken IFoundationSettings identity). Cached until Invalidate() is called — a caller that wants a fresh read after the project changed (e.g. a wizard window regaining focus, following the LeaderboardWizardBoardStepValidationCache precedent) invalidates first.

    Inheritance
    object
    SerenitySystemConfigurationResolver
    Inherited Members
    object.ToString()
    object.Equals(object)
    object.Equals(object, object)
    object.ReferenceEquals(object, object)
    object.GetHashCode()
    object.GetType()
    Namespace: Serenity.CreateGame.Infrastructure.Editor.Systems
    Assembly: Serenity.UnityCreateGame.Infrastructure.Editor.dll
    Syntax
    public sealed class SerenitySystemConfigurationResolver

    Constructors

    SerenitySystemConfigurationResolver()

    Declaration
    public SerenitySystemConfigurationResolver()

    Properties

    RecomputeCountForTests

    Declaration
    public int RecomputeCountForTests { get; }
    Property Value
    Type Description
    int

    Test seam: how many times Resolve(IReadOnlyList<SerenityInstallableSystem>) actually recomputed, as opposed to returning the cache.

    Methods

    Invalidate()

    Forces the next Resolve(IReadOnlyList<SerenityInstallableSystem>) call to recompute instead of returning the cache.

    Declaration
    public void Invalidate()

    Resolve(IReadOnlyList<SerenityInstallableSystem>)

    Returns one row per system in systems, computed once and cached until Invalidate() is called. Recomputing costs exactly one Serenity.Global.Infrastructure.Editor.Validation.SerenityHealthCheckValidator.LoadFoundationAssets project-wide scan, shared by every system's identity check. Every row's BootTaskWiring is computed over every project-owned initialization pipeline profile — use the Resolve(IReadOnlyList<SerenityInstallableSystem>, IReadOnlyList<string>) overload once a profile has already been resolved, so a row's own "wired?" answer never disagrees with a wiring plan built against that same resolved profile.

    Declaration
    public IReadOnlyList<SerenitySystemConfigurationRow> Resolve(IReadOnlyList<SerenityInstallableSystem> systems)
    Parameters
    Type Name Description
    IReadOnlyList<SerenityInstallableSystem> systems
    Returns
    Type Description
    IReadOnlyList<SerenitySystemConfigurationRow>

    Resolve(IReadOnlyList<SerenityInstallableSystem>, IReadOnlyList<string>)

    Declaration
    public IReadOnlyList<SerenitySystemConfigurationRow> Resolve(IReadOnlyList<SerenityInstallableSystem> systems, IReadOnlyList<string> restrictWiringToProfilePaths)
    Parameters
    Type Name Description
    IReadOnlyList<SerenityInstallableSystem> systems

    The systems to resolve a row for.

    IReadOnlyList<string> restrictWiringToProfilePaths

    When non-null, BootTaskWiring only counts a system as wired into one of these project-owned profiles — the SAME already-resolved profile set Serenity.CreateGame.Infrastructure.Editor.Wiring.ProjectWiringPlanner plans a run's boot tasks against. Null checks every project-owned profile.

    Returns
    Type Description
    IReadOnlyList<SerenitySystemConfigurationRow>

    Events

    Invalidated

    Raised every time Invalidate() runs — a caller that caches something derived from this resolver's rows (Initialize Serenity's own dry-run preview, e.g.) subscribes once instead of hunting down every one of this class's callers to add its own invalidation call beside theirs.

    Declaration
    public event Action Invalidated
    Event Type
    Type Description
    Action
    In this article
    © 2026 Serenity. All Rights Reserved