SharpSoundDevice.PluginLoader.Create C# (CSharp) Method

Create() public static method

public static Create ( string assemblyFilename, string bridgeDllDir ) : IAudioDevice
assemblyFilename string
bridgeDllDir string
return IAudioDevice
        public static IAudioDevice Create(string assemblyFilename, string bridgeDllDir)
        {
            var pluginAssemblyPath = GetAssemblyPath(assemblyFilename, bridgeDllDir);
            if (pluginAssemblyPath == null)
            {
                Logging.Log(string.Format("Unable to find assembly file. AssemblyFilename: {0}, BridgeDllDir: {1}", assemblyFilename, bridgeDllDir));
                return null;
            }

            var asm = LoadPluginAssembly(pluginAssemblyPath);
            //RegisterAssemblyResolver(Path.GetDirectoryName(pluginAssemblyPath)); // Already taken care of in C++/CLI code

            var instance = CreatePluginInstance(asm);
            return instance;
        }

Usage Example

Example #1
0
        /// <summary>
        /// Load the plugin assembly and instantiates a new instance of the plugin class
        /// </summary>
        /// <param name="dllFilename"></param>
        /// <param name="assemblyFilename"></param>
        /// <returns></returns>
        public static int CreateDevice(string dllFilename, string assemblyFilename)
        {
            assemblyFilename = assemblyFilename.Trim();

            if (assemblyFilename.StartsWith("::PLACEHOLDER"))
            {
                Logging.Log("VST Bridge dll has not been patched, it only contains placeholder assembly name. You must set the correct assembly name");
                return(-1);
            }

            lock (LockObject)
            {
                int id = CurrentID;
                CurrentID++;

                Logging.Log("SharpSoundDevice Version: " + Assembly.GetExecutingAssembly().FullName);
                Logging.Log("Starting new plugin instance, ID: " + id);

                var assemblyName = assemblyFilename;
                Logging.Log("Assembly name: " + assemblyName);
                var bridgeDllDir = Path.GetDirectoryName(dllFilename);
                Logging.Log("Bridge Dll Dir: " + bridgeDllDir);
                var instance = PluginLoader.Create(assemblyName, bridgeDllDir);

                if (instance == null)
                {
                    return(-1);
                }

                Devices.Add(instance);                 // extend list by one
                instance.DeviceId = GetID(instance);
                Logging.Log("Object successfully loaded, DeviceId: " + GetID(instance));
                return(id);
            }
        }