簡體   English   中英

創建和使用C#DLL

[英]Creating and Using a C# DLL

我使用的是VS2010。我創建了C#類並將其編譯為DLL,然后向其添加Windows窗體項目以測試dll。 我在解決方案資源管理器的TestApp項目中添加了對DLL的引用。 兩個項目均編譯無誤。 但是,當我運行TestApp時,在dll中調用方法時會收到NullReferenceException。 該錯誤表明該對象沒有實例,我不知道該實例是被調用的方法。

我所做的一切與我在互聯網上找到的其他DLL示例相同。 例如: http : //msdn.microsoft.com/en-us/library/3707x96z(v=vs.100).aspx

http://coderock.net/how-to-create-a-dll-file-in-visual-studio-2010/

但是我顯然錯過了一些基本知識。

// DLL項目

namespace SLink
{
    public class AmpAPI
    {
        public String[] ReadID( Int32 id )
        {
            String[] result = new string[] { "A", "B", "C", "D" };
            return result;
        }
    }
}

//測試應用

using SLink;

namespace TestApp
{
    public partial class frmMain : Form
    {
        AmpAPI amp;

        public frmMain()
        {
            InitializeComponent();
        }

        private void frmMain_Load( object sender, EventArgs e )
        {
            amp = new AmpAPI();
        }

        private void btnUpdate_Click( object sender, EventArgs e )
        {
            String[] result = new String[] { "", "", "", "" };
            result = amp.ReadID( 0 ); // <-- NullReferenceException
        }
    }
}

看起來在窗體加載時未調用您的frmMain_Load方法。

您是否只是復制並粘貼了代碼? 將方法注冊為Load事件的事件處理程序還不夠。

  • 您可以通過在設計器中雙擊表單將新處理程序添加到表單的Load事件。 然后,您可以編輯方法的主體。
  • 或者,您可以選擇現有方法來處理事件。 為此,請在設計器中單擊表單,轉到屬性,選擇事件,找到Load ,然后從下拉列表中選擇您的方法。

在WinForms設計器中將處理程序添加到Load事件

嘗試這個:

    private void btnUpdate_Click( object sender, EventArgs e )
    {
        String[] result = amp.ReadID( 0 );
    }

不確定是否喜歡您以前的實現來初始化數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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