我有两个项目P1和P2(ClassLibrary项目)。我将P2添加到P1的引用中。我需要在P2项目中从P1获取方法。
我尝试这样做:
//P1 project class Commands
class Commands:ICommands
{
public void Somemethod()
{......}
}
//P2 project
interface ICommands
{
void Somemethod();
}
class UserControl1:UserControl
{
ICommands _commands
public void setCommands(ICommands com)
{
_commands=com;
}
private void button1_Click(object sender, EventArgs e)
{
_commands.Somemethod();
}
}
但是当我按下button1时我有例外:
对象引用未设置为对象的实例。
这是autoCad插件。 P1从P2加载调色板,但调色板按钮的命令在P1项目中。
当AutoCad运行时,调色板加载。当我按下按钮并尝试调用Somemethod()时,会出现此错误; 所有错误文字:
应用程序中的组件中发生了未处理的异常。如果单击“继续”,应用程序将忽略此错误并尝试继续。 对象引用未设置为对象的实例。
Somemethod()必须在AutoCad中运行新绘图 AutoCad仅使用第二个dll(P2项目)中的一个dll(P1项目)UI调色板加载我需要从第一个.dll(P1项目)调色板加载方法
答案 0 :(得分:0)
在P1中定义一个具有静态方法的类
从P2(已在AutoCAD上加载),加载P1,然后调用P1 Class.Method()