Assembly assembly = Assembly.LoadFrom( "Draw.dll");   
 Type t = assembly.GetType( "DrawBitmap.Class1");
 object[] args = new object[] { GetValue(), ys,Value };   
 mslFirstControl1.Bitmap = (Bitmap)t.InvokeMember("DrawMath", BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Static | BindingFlags.InvokeMethod, null, null,  args);
我调用draw.dll里面一个方法DrawMath(ArrayList DrawValue, Yanse YS, int Type)
不知为什么总说找不到方法DrawMath(ArrayList DrawValue, Yanse YS, int Type))
DLL里面结构如下
namespace DrawBitmap
{
class Class1
{
public bitmap DrawMath(ArrayList DrawValue, Yanse YS, int Type)
{
................
}
)
}
}

解决方案 »

  1.   


                    Assembly asm = Assembly.LoadFrom("Draw.dll");//servlet-dll  
                        Type type = asm.GetType("DrawBitmap.Class1");//servlet-class
                        object o;                    o = type.GetConstructor(new Type[] { }).Invoke(new object[] { });
                        Arraylist list=new ArrayList();
    Yanse YS;
    int type;
                        BitMap map=(BitMap)type.GetMethod("DrawMath").Invoke(o, new object[] { list,YS,type });
                
      

  2.   

    Yanse是我自定义的一个结构体,我需要在dll和程序里面都定义吗?程序报错说无法转换DEMO.FORM1.YANSE无法转换到 DRAW.DRAWBITMAP.YANSE
      

  3.   

    DEMO.FORM1.YANSE无法转换到 DRAW.DRAWBITMAP.YANSE
    对计算机来说 这不是一个东西 不是一个结构体 如果你不引用 
    DEMO.FORM1.YANSE 那你反射到的 只能依靠反射调用.
      

  4.   

    mslFirstControl1.Bitmap = (Bitmap)t.InvokeMember("DrawMath", BindingFlags.DeclaredOnly  ¦ BindingFlags.Public  ¦ BindingFlags.Static  ¦ BindingFlags.InvokeMethod|BindingFlags.Instance, null, null,  args); 注意加上:BindingFlags.Instance,表示实例方法,你代码中的方法本身就是Non static,非静态的。
      

  5.   

    mslFirstControl1.Bitmap = (Bitmap)t.InvokeMember("DrawMath", BindingFlags.DeclaredOnly  ¦ BindingFlags.Public  ¦ BindingFlags.Static  ¦ BindingFlags.InvokeMethod|BindingFlags.Instance, null, null,  args); 注意加上:BindingFlags.Instance,表示实例方法,你代码中的方法本身就是Non static,非静态的。
      

  6.   

    mslFirstControl1.Bitmap = (Bitmap)t.InvokeMember("DrawMath", BindingFlags.DeclaredOnly  ¦ BindingFlags.Public  ¦ BindingFlags.Static  ¦ BindingFlags.InvokeMethod|BindingFlags.Instance, null, null,  args); 注意加上:BindingFlags.Instance,表示实例方法,你代码中的方法本身就是Non static,非静态的。
      

  7.   

    有这样的可能
    你可以这样
    作一个dll工程
    里面定义一个结构是YANSE
    然后你那两个工程都饮用它
    这样就没问题了
      

  8.   

    网络有问题 一推话白打了
    简单的说
    就是你把YANSE做成一个dll
    然后你调用的类,和class1那个类都饮用YANSE这个dll
    这样就可以了
    不知道这样说你明白吗 
      

  9.   

    我就不信了!
    发不出消息去把YANSE做成一个dll然后其它两个类都饮用它就可以解决了
      

  10.   

    那也有点太浪费了,一个结构体就用一个DLL?我程序里有好多自定义的结构体。
      

  11.   

    能不能在DLL里面定义结构体,然后在程序里new一下,这样不需要在程序里再定义相同的结构体。
      

  12.   

    就是常常用到的class 和结构体,常量之类的 做成一个dll
    model.dll
    给的意见。可以选择不用。
      

  13.   

    我是想动态调用DLL,不想用添加引用的方式使用dll