[英]Get value from a dynamically loaded DLL
如何檢索位於動態加載的Dll中的字符串thats?
我有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();
}
}
}
主窗體
button1.text = (load the Dll somehow).dllTitle
注意,我希望用戶能夠將Dll放到一個文件夾中,所以我認為在VS中將Dll作為引用添加是不可能的。
我不確定,但是請嘗試以下操作:
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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.