0

我正在使用 VS 2010。我创建了一个 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
        }
    }
}
4

2 回答 2

3

frmMain_Load加载表单时,您的方法似乎没有被调用。

您只是复制并粘贴代码吗?这还不足以将该方法注册为事件的事件处理程序Load

  • 您可以Load通过在设计器中双击表单来为表单的事件添加新的处理程序。然后您可以编辑方法的主体。
  • 或者,您可以选择现有方法来处理事件。为此,请单击设计器中的表单,转到属性,选择事件,查找Load,然后从下拉列表中选择您的方法。

在 WinForms 设计器中向 Load 事件添加处理程序

于 2012-05-14T22:35:21.067 回答
0

尝试这个:

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

不确定它是否喜欢你以前的初始化数组的实现。

于 2012-05-14T22:49:54.043 回答