关键部分:
DLL:
public interface ITest
{
void test();
} public class Class1:ITest
{
public void test()
{
System.Console.WriteLine("hello word");

}

}调用:
public interface ITest
{
void test();
} private void button1_Click(object sender, System.EventArgs e)
{
Assembly asm = Assembly.LoadFrom(@"I:\MySoft\ToolsBox\CSharp\ClassLibrary1\bin\Debug\ClassLibrary1.dll");
ITest obj = (ITest)asm.CreateInstance("ClassLibrary1.Class1");
obj.test();
}

解决方案 »

  1.   

    你的dll实现的接口可调用界面所使用的接口实际不是同一个接口。
    注意:他们不在相同的命名空间中!
    接口应该时统一的。
      

  2.   

    using the  DLL,
    then:   Class1 c = new Class1();
       ITest obj = c as ITest;
       obj.test();
      

  3.   

    修改你的窗口添加ClassLibrary1的引用然后去掉你窗口里面的接口声明
      

  4.   

    或者说,你并不想把这个ClassLibrary1的dll放到这个窗体里面,害怕你的class泄漏那么你应该把接口单独做一个dll如下:using System;namespace ClassLibrary1
    {
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>

    public interface ITest
    {
    void test();
    }
    }
    using System;
    using ClassLibrary1;namespace ClassLibrary2
    {
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>

    public class Class1:ITest
    {
    public void test()
    {
    System.Console.WriteLine("hello word");

    }

    }
    }然后你的窗体也引用ClassLibrary1,就可以了