我正在使用VS 2010.我创建了一个C#类并将其编译为DLL,然后添加了一个Windows窗体项目来测试它。我在解决方案资源管理器中的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 Project
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
}
}
}
答案 0 :(得分:3)
看起来在加载表单时没有调用frmMain_Load
方法。
您是否只是复制并粘贴代码?这不足以将该方法注册为Load
事件的事件处理程序。
Load
事件添加新的处理程序。然后你可以编辑方法的主体。Load
,然后从下拉列表中选择您的方法。
答案 1 :(得分:0)
试试这个:
private void btnUpdate_Click( object sender, EventArgs e )
{
String[] result = amp.ReadID( 0 );
}
不确定是否喜欢您之前的实现来初始化数组。