private static void Scan(IServiceCollection serviceCollection, Assembly assembly) { IEnumerable <Type> types = ScanForContexts(serviceCollection, assembly); serviceCollection.AddJavascriptLogger(); serviceCollection.AddSingleton <IBlazorDBInterop, BlazorDBInterop>(); serviceCollection.AddSingleton <IBlazorDBLogger, BlazorDBLogger>(); serviceCollection.AddSingleton <IStorageManagerUtil, StorageManagerUtil>(); serviceCollection.AddSingleton <IStorageManager, StorageManager>(); serviceCollection.AddSingleton <IStorageManagerSave, StorageManagerSave>(); serviceCollection.AddSingleton <IStorageManagerLoad, StorageManagerLoad>(); foreach (Type type in types) { serviceCollection.AddSingleton(type, s => { IJSRuntime jsRuntime = s.GetRequiredService <IJSRuntime>(); object instance = Activator.CreateInstance(type); PropertyInfo smProp = type.GetProperty("StorageManager", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static); IStorageManager storageManager = s.GetRequiredService <IStorageManager>(); smProp.SetValue(instance, storageManager); PropertyInfo lProp = type.GetProperty("Logger", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static); IBlazorDBLogger logger = s.GetRequiredService <IBlazorDBLogger>(); lProp.SetValue(instance, logger); PropertyInfo smuProp = type.GetProperty("StorageManagerUtil", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static); IStorageManagerUtil storageManagerUtil = s.GetRequiredService <IStorageManagerUtil>(); smuProp.SetValue(instance, storageManagerUtil); return(instance); }); } }
public StorageManagerLoad(IBlazorDBLogger logger, IBlazorDBInterop blazorDBInterop, IStorageManagerUtil storageManagerUtil) { _logger = logger; _blazorDBInterop = blazorDBInterop; _storageManagerUtil = storageManagerUtil; }