Files
DP44/docs/ai/Common/DTS.Common.Core/ServiceManager.md
2026-04-17 14:55:32 -04:00

2.9 KiB

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
Common/DTS.Common.Core/ServiceManager/IServicePublishedEvent.cs
Common/DTS.Common.Core/ServiceManager/ServicePublishedEvent.cs
Common/DTS.Common.Core/ServiceManager/ServiceManager.cs
2026-04-17T16:35:08.366069+00:00 zai-org/GLM-5-FP8 1 97facc88d83d9155

ServiceManager Module Documentation

1. Purpose

The ServiceManager module provides a service locator pattern implementation that enables loose coupling between components. It allows a component to publish an implementation of a singleton interface (service) that other components can retrieve without knowing the publisher. The module includes an event system (IServicePublishedEvent/ServicePublishedEvent) that notifies subscribers when services are published or unpublished, enabling reactive dependency management across the application.


2. Public Interface

IServicePublishedEvent (interface)

File: IServicePublishedEvent.cs

Event contract fired when a service interface is published or unpublished.

Property Type Description
ServiceType Type Returns the type of service being published/unpublished.
IsPublished bool Returns true if the service is being published, false if being unpublished.

ServicePublishedEvent (class)

File: ServicePublishedEvent.cs

Concrete implementation of IServicePublishedEvent.

Property Type Accessor Description
ServiceType Type get; internal set; The type of service being published/unpublished.
IsPublished bool get; internal set; true if publishing, false if unpublishing.

ServiceManager (static class)

File: ServiceManager.cs

Static service locator that manages publication and retrieval of singleton services.

Methods

Signature Description
void Publish<T>(T item) where T : class Publishes a service implementation for interface type T. Throws ArgumentException if T is already published.
void Publish(object item, IEnumerable<Type> interfaceList, bool skipPublishedInterfaces) Publishes a single object as the implementation for multiple interfaces. If skipPublishedInterfaces is false, throws ArgumentException for any already-published interface; if true, silently skips already-published interfaces.
bool Exists<T>() where T : class Returns true if interface type T has been published; otherwise false.
bool Exists(Type t) Returns true if the specified interface type has been published; otherwise false.
T Get<T>() where T : class Returns the published service for interface type T. Throws ArgumentException if T has not been published.
void Clear<T>() where T : class Unpublishes the service for interface type T if it exists. Fires an unpublish event.
`void Clear(IEnumerable