using System; using System.Collections.Generic; namespace BizHawk.Emulation.Common { /// /// This interface defines the mechanism by which clients can retrieve /// from an IEmulator implementation /// An implementation should collect all available IEmulatorService instances. /// This interface defines only the client interaction. This interface does not specify the means /// by which a service provider will be populated with available services. However, an implementation /// by design must provide this mechanism /// /// /// public interface IEmulatorServiceProvider { /// /// Returns whether or not T is available /// /// The to check bool HasService() where T : IEmulatorService; /// /// Returns whether or not t is available /// bool HasService(Type t); /// /// Returns an instance of T if T is available /// Else returns null /// /// The requested T GetService() where T : IEmulatorService; /// /// Returns an instance of t if t is available /// Else returns null /// object GetService(Type t); /// /// Gets a list of all currently registered services available to be retrieved /// IEnumerable AvailableServices { get; } } }