mirror of
https://github.com/chylex/TweetDuck.git
synced 2025-04-28 00:15:47 +02:00
26 lines
813 B
C#
26 lines
813 B
C#
using System;
|
|
using System.Collections.Generic;
|
|
using TweetLib.Api;
|
|
|
|
namespace TweetLib.Core.Systems.Api {
|
|
public class ApiImplementation : ITweetDuckApi {
|
|
public TweetDuckExtension? CurrentExtension { get; internal set; }
|
|
|
|
private readonly Dictionary<Type, ITweetDuckService> services = new Dictionary<Type, ITweetDuckService>();
|
|
|
|
internal ApiImplementation() {}
|
|
|
|
public void RegisterService<T>(T service) where T : class, ITweetDuckService {
|
|
if (!typeof(T).IsInterface) {
|
|
throw new ArgumentException("Api service implementation must be registered with its interface type.");
|
|
}
|
|
|
|
services.Add(typeof(T), service);
|
|
}
|
|
|
|
public T? FindService<T>() where T : class, ITweetDuckService {
|
|
return services.TryGetValue(typeof(T), out ITweetDuckService? service) ? service as T : null;
|
|
}
|
|
}
|
|
}
|