如何检索位于动态加载的Dll中的字符串?
我有2个项目,一个Dll&一个"主要"形成。 Dll作为控件加载到主窗体的面板中。
的MainForm:
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();
}
}
}
的MainForm
button1.text = (load the Dll somehow).dllTitle
请注意,我希望用户能够将Dll删除到文件夹中,所以我认为在VS中添加Dll作为参考不是一种选择,我猜。
答案 0 :(得分:0)
我不确定,但试试这个:
Type myType = form.GetType();
IList<FieldInfo> fields = new List<FieldInfo>(myType.GetFields());
object fValue;
foreach (FieldInfo f in fields)
{
if(f.Name == "dllTitle")
{
fValue = f.GetValue(form);
break;
}
}
此外,您可以使用LinQ而不是foreach。