C# 如何使用反射创建按钮?

C# 如何使用反射创建按钮?,c#,.net,reflection,.net-assembly,C#,.net,Reflection,.net Assembly,我想从GAC DLL创建任何实例,但不知道如何加载 Assembly asemb = Assembly.LoadFile(dllName); try { obj = Activator.CreateInstance(asemb.GetType(type)); } catch (Exception) { return null; } 我尝试了此代码,但它不起作用对我有效: var assembly = Assembly.Load("System.Windows.Forms, Ve

我想从GAC DLL创建任何实例,但不知道如何加载

Assembly asemb = Assembly.LoadFile(dllName);
try
{
    obj = Activator.CreateInstance(asemb.GetType(type));
}
catch (Exception)
{
    return null;
}
我尝试了此代码,但它不起作用

对我有效:

var assembly = Assembly.Load("System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
var type     = assembly.GetType("System.Windows.Forms.Button");
var button   = Activator.CreateInstance(type);
要从.dll文件获取完整程序集名称,请执行以下操作:

var assemblyFileName = @"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Windows.Forms.dll";
var assembly         = Assembly.LoadFile(assemblyFileName);
var assemblyName     = assembly.GetName().ToString();

你说它不起作用是什么意思?有任何异常或错误消息吗?
new Button()
有什么问题吗?我发现异常无法加载文件或程序集“System.Windows.Forms”或其依赖项之一。系统找不到指定的文件。我需要从字符串名称创建类实例什么是
dllName
type
值?我希望动态加载DLL,而不仅仅是加载控件。。。。如何通过dll名称获取dll版本、区域性和PublicKeyToken?