我想在代码里面获得别人写的dll里面的方法和属性,不知道可以实现不?
假设这个dll已经在我本地而且我已经知道他的路径
谢谢大家

解决方案 »

  1.   

    可以,C++的dll可以用dllImport读取
    .net写的或com的dll只须添加引用就能使用
      

  2.   

    关键是我不能够添加引用!!!!!!!!!!
    是用c#写的
    让代码自动读取这个dll并且获得他的方法和属性
      

  3.   

    楼上正解
    如果不是调windows的API这样的,只要在项目的“引用”处右键,选择“浏览”,找到你要的那个DLL,添加即可,然后在项目里用到的地方加上:using DLL中的名称空间
      

  4.   

    ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemReflectionAssemblyClassLoadFileTopic.htm
     你师傅没教你么?
    :)
      

  5.   

    ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemreflectionmoduleclassgettypestopic.htm
      

  6.   

    对啊,就是要在参照里把那个DLL引用进来,不过如果是内部DLL的话,就不要using ,只要在前台代码里把那个dll追加进来就可以了!
      

  7.   

    hdt(倦怠) ( )
    我的2005根本就打开不了你的连接啊
      

  8.   

    2005拿到手到现在也没用过
    给你个2003的参考一下吧 ,随手写,错了莫怪
    Assembly assembly = Assembly.LoadFile("youdll.dll");
    Type[] types = assembly.GetTypes();
    foreach( Type t in types )
    {
       MemberInfo[] ms = t.GetMembers(); //这些就是他的属性和方法
    }
      

  9.   

    调用你可以得到方法字段后
    object o = assembly.CreatInstance(t.FullName );
    MethodInfo mi = t.GetMethod("方法名");
    mi.Invoke( o , 参数列表数组 )
      

  10.   

    非常感谢hdt(倦怠)
    最后请教次
    object o = assembly.CreatInstance(t.FullName );
    我如何把这个o转换成这个类的实例对象好吗?
    立即结帐
      

  11.   

    o 其实已经就是这个类的实例了,因为你不是通过引用得来的从语言的角度来无法直接调用
    类似于
    object o =...
    youtype to = (youtype)o
    to.yourmethod();也就是说,因为是动态的,编译器无法去理解
    youtype to = (youtype)o //只有通过引用
    youtype to = (youtype)o //这句话编译器才能理解
      

  12.   

    object o = assembly.CreatInstance(t.FullName );
    这里的o已经是你想要的类的类型实例了,只不过用的是object的引用,进行一次转型就可以了~