簡體   English   中英

從動態加載的DLL中獲取價值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM