问题描述
- 在wpf中如何实现动态调用一个用c#编写的dll?
-
在wpf中如何实现动态调用一个用c#编写的dll?dll是一个winform窗体。如何在wpf中调用?以wpf为主窗口
解决方案
不知道你说的动态调用是什么意思?是运行时加载么?那么用Assembly.LoadFrom加载dll,用Assemby.CreateInstance反射创建对象,然后用GetType得到类型,用GetMethod得到方法,最后Invoke调用。
解决方案二:
按照我说的关键字google下或者看msdn。
解决方案三:
问题已解决
Assembly assembly = Assembly.LoadFrom(@"文件路径");
//Type name = assembly.GetType("AppUI.CompanyInformation.BaseForm");//获取DLL命名空间
string name = assembly.GetTypes()[0].ToString();//选择你需要的命名空间
try
{
System.Windows.Forms.Form obj = assembly.CreateInstance(name) as System.Windows.Forms.Form;//创建对象
// MessageBox.Show(obj.ToString());
//System.Windows.Forms.Form aa = obj as System.Windows.Forms.Form;
obj.TopLevel = false;
winform.Child = obj;//此处winform为xaml中的winformhost控件
//grid.Children = obj;
}
catch (Exception ex)
{
throw ex.InnerException;
}