【发布时间】:2015-01-13 16:12:34
【问题描述】:
简单问题:
如何检索位于动态加载的 Dll 中的字符串?
详情:案例:
我有 2 个项目,一个 Dll 和一个“主”表单。 Dll 作为控件加载到主窗体的面板中。
主窗体:
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Plugin Files|*.dll";
if (DialogResult.OK == ofd.ShowDialog())
{
Assembly assembly = Assembly.LoadFile(ofd.FileName);
Type type = assembly.GetType("FormDLL.Form1");
Form form = (Form)Activator.CreateInstance(type);
//form.ShowDialog(); // Or Application.Run(form)
form.TopLevel = false;
panel1.Controls.Add(form);
form.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
form.Dock = DockStyle.Fill;
form.Show();
}
/
我想做什么
我正在尝试从 Dll 中检索一个字符串.. 像这样
namespace FormDLL
{
public partial class Form1 : Form
{
public string dllTitle = "DllTab1";
public Form1()
{
InitializeComponent();
}
}
}
主窗体
button1.text = (load the Dll somehow).dllTitle
注意,我希望用户能够将 Dll 放在一个文件夹中,所以我认为在 VS 中添加 Dll 作为引用不是一个选项,我猜。
【问题讨论】:
-
使用描述 dllTitle 属性的接口,在你的 dll 中实现它,在宿主中转换和调用。