예제 #1
0
        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);
                });
            }
        }
예제 #2
0
 public StorageManagerLoad(IBlazorDBLogger logger, IBlazorDBInterop blazorDBInterop, IStorageManagerUtil storageManagerUtil)
 {
     _logger             = logger;
     _blazorDBInterop    = blazorDBInterop;
     _storageManagerUtil = storageManagerUtil;
 }