/// <summary> /// Aquire the storage provider associated with the grain type. /// </summary> /// <returns></returns> public static IStorageProvider GetStorageProvider(this Grain grain, IServiceProvider services) { StorageProviderAttribute attr = grain.GetType().GetTypeInfo().GetCustomAttributes <StorageProviderAttribute>(true).FirstOrDefault(); IStorageProvider storageProvider = attr != null ? services.GetServiceByName <IStorageProvider>(attr.ProviderName) : services.GetService <IStorageProvider>(); if (storageProvider == null) { var errMsg = string.Format("No storage providers found loading grain type {0}", grain.GetType().FullName); throw new BadProviderConfigException(errMsg); } return(storageProvider); }
/// <summary> /// Aquire the storage provider associated with the grain type. /// </summary> /// <returns></returns> public static IGrainStorage GetGrainStorage(this Grain grain, IServiceProvider services) { StorageProviderAttribute attr = grain.GetType().GetCustomAttributes <StorageProviderAttribute>(true).FirstOrDefault(); IGrainStorage storageProvider = attr != null ? services.GetServiceByName <IGrainStorage>(attr.ProviderName) : services.GetService <IGrainStorage>(); if (storageProvider == null) { ThrowMissingProviderException(grain, attr?.ProviderName); } return(storageProvider); }