A lightweight Service Locator implementation for C# and Unity.
Cumin provides a simple way to register and resolve shared services without introducing a full dependency injection container. It is suitable for managing global services and managers in small to medium-sized applications.
- Simple Service Locator pattern
Locator<T>for managing a single service instanceCompositeLocatorfor managing multiple services- Supports interface-to-implementation registration
- No external dependencies
A locator for managing a single service instance.
Locator<GameManager>.Register(newGameManager());varmanager=Locator<GameManager>.Instance;if(Locator<GameManager>.IsValid){// Available}Locator<GameManager>.Dispose();A locator for managing multiple services.
CompositeLocator.Register(newAudioManager());CompositeLocator.Register<AudioManager>();CompositeLocator.Register<IAudioManager,AudioManager>();varaudio=CompositeLocator.Resolve<AudioManager>();or
varaudio=CompositeLocator.Resolve<IAudioManager>();CompositeLocator.Unregister<AudioManager>();CompositeLocator.Clear();publicinterfaceIAudioManager{voidPlay(stringname);}publicclassAudioManager:IAudioManager{publicvoidPlay(stringname){Console.WriteLine(name);}}CompositeLocator.Register<IAudioManager,AudioManager>();varaudio=CompositeLocator.Resolve<IAudioManager>();audio?.Play("BGM");- Game development
- Small applications
- Managing global services
- Sharing manager classes
- Projects that do not require a full DI container
Cumin is a lightweight Service Locator implementation.
It does not provide advanced dependency injection features such as automatic injection, lifetime management, or scoped services. For larger projects, consider using a dedicated DI container where appropriate.
zlib/libpng License