Reflection C#

using System;
using System.IO;
using System.Reflection;
namespace ExplorerPlus.Utilities
{
    public static class PluginManager
    {
        /// 
        /// Creates an instance of a class implementing a specific interface in a given assembly.
        /// 

        /// The String containing the name of the interface to get. For generic interfaces, this is the mangled name.
        /// The name or path of the file that contains the manifest of the assembly.
        /// Reference to the created instance if found; otherwise, null.
        public static object CreateInstance(string interfaceName, string assemblyFile)
        {
            // ensure interface name is not null
            if (interfaceName != string.Empty && interfaceName != null && interfaceName.Length > 0)
            {
                // check if assembly file exists
                if (File.Exists(assemblyFile))
                {
                    //Create a new assembly from the plugin file 
                    Assembly pluginAssembly = Assembly.LoadFrom(assemblyFile);
                    //Next we'll loop through all the Types found in the assembly
                    foreach (Type pluginType in pluginAssembly.GetTypes())
                    {
                        if (pluginType.IsPublic) //Only look at public types
                        {
                            if (!pluginType.IsAbstract)  //Only look at non-abstract types
                            {
                                //Gets a type object of the interface we need the plugins to match
                                Type typeInterface = pluginType.GetInterface(interfaceName, true);
                                //Make sure the interface we want to use actually exists
                                if (typeInterface != null)
                                {
                                    return Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
                                }
                            }
                        }
                    }
                }
            }
            return null;
        }
    }
}