static Provider()
        {
            lock (typeof(Provider)) {
                if (provider != null)
                {
                    return;
                }

                var extensions = GetOrderedExtensions(
                    "/Banshee/Platform/IOProvider",
                    ProviderSchema.Get(),
                    "Banshee.IO.Gio.Provider", "Banshee.IO.Unix.Provider", "Banshee.IO.SystemIO.Provider"
                    );

                foreach (var node in extensions)
                {
                    try {
                        provider = (IProvider)node.CreateInstance(typeof(IProvider));
                        break;
                    } catch (Exception e) {
                        Log.Warning("IO provider extension failed to load", e.Message);
                    }
                }

                if (provider == null)
                {
                    provider = new Banshee.IO.SystemIO.Provider();
                }

                Log.DebugFormat("IO provider extension loaded ({0})", provider.GetType().FullName);

                directory = (IDirectory)Activator.CreateInstance(provider.DirectoryProvider);
                file      = (IFile)Activator.CreateInstance(provider.FileProvider);
            }
        }
Пример #2
0
        static Provider()
        {
            lock (typeof(Provider)) {
                if (provider != null)
                {
                    return;
                }

                foreach (TypeExtensionNode node in AddinManager.GetExtensionNodes("/Banshee/Platform/IOProvider"))
                {
                    try {
                        if (node.HasId && node.Id == ProviderSchema.Get())
                        {
                            provider = (IProvider)node.CreateInstance(typeof(IProvider));
                        }
                    } catch (Exception e) {
                        Log.Warning("IO provider extension failed to load", e.Message);
                    }
                }

                if (provider == null)
                {
                    provider = new Banshee.IO.SystemIO.Provider();
                }

                Log.DebugFormat("IO provider extension loaded ({0})", provider.GetType().FullName);

                directory = (IDirectory)Activator.CreateInstance(provider.DirectoryProvider);
                file      = (IFile)Activator.CreateInstance(provider.FileProvider);
            }
        }