}                                                                        //TODO: Need to work this out because in future there can be more than one provider active at a time.



        //TODO: In future the registered providers will be dynamically loaded from MEF by watching a hot folder for compiled provider dlls (and other ways in future...)
        public static void RegisterProvider(IOASISProvider provider)
        {
            if (!_registeredProviders.Any(x => x.ProviderName == provider.ProviderName))
            {
                _registeredProviders.Add(provider);
            }
        }
        public static void DeaAtivateProvider(ProviderType type)
        {
            IOASISProvider provider = _registeredProviders.FirstOrDefault(x => x.ProviderType == type);

            if (provider != null)
            {
                provider.DeActivateProvider();
            }
        }
        //TODO: In future more than one StorageProvider will be active at a time so we need to work out how to handle this...
        public static void SwitchCurrentStorageProvider(ProviderType providerType)
        {
            IOASISProvider provider = _registeredProviders.FirstOrDefault(x => x.ProviderType == providerType);

            if (provider != null && (provider.ProviderCategory == ProviderCategory.Storage || provider.ProviderCategory == ProviderCategory.StorageAndNetwork))
            {
                ProviderManager.CurrentStorageProviderType = providerType;
                ProviderManager.CurrentStorageProvider     = (IOASISStorage)provider;
                ProviderManager.CurrentStorageProvider.ActivateProvider();
            }
        }
        // Highly recommend this one is used.
        public static IOASISProvider GetAndActivateProvider(ProviderType type)
        {
            IOASISProvider provider = _registeredProviders.FirstOrDefault(x => x.ProviderType == type);

            if (provider != null)
            {
                provider.ActivateProvider();
            }

            return(provider);
        }
 public static void UnRegisterProvider(IOASISProvider provider)
 {
     _registeredProviders.Remove(provider);
 }
 public static bool IsProviderRegistered(IOASISProvider provider)
 {
     return(_registeredProviders.Any(x => x.ProviderName == provider.ProviderName));
 }