如题,时要使用反射么?谁有具体的代码?谢了!

解决方案 »

  1.   

    如果引用操作系统的dll,可以用
    [DllImport("dll")] 
    如果引用自己写的 只能用反射了,可以参考petshop的
    (PetShop.IDAL.IAccount) Assembly.Load(path).CreateInstance(className);
      

  2.   

    谁有更详细的代码么,获取dll文件中有哪些命名空间,哪些类,哪些方法?
      

  3.   

    using System.Reflection;public void GetPlugs(string filepath)
            {
                try
                {
                    string[] fileNames = System.IO.Directory.GetFiles(filepath, "*.dll");                Assembly tmp = null;
                    foreach (string fileName in fileNames)
                    {
                        try
                        {
                            tmp = Assembly.LoadFile(fileName);
                        }
                        catch
                        {
                            continue;
                        }                    Type[] types = tmp.GetTypes();
                        foreach (Type t in types)
                        {
                            PlugInAttribute pluginAttr = null;
                            if (IsValidPlugin(t, out pluginAttr))
                            {
                                mPlugs.Add(t.FullName, tmp);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    System.Windows.Forms.MessageBox.Show(e.Message);
                }
            }
      

  4.   

    用反射,它下面有就个属性,可以满足要求,看下.net下的插件技术有很大的帮助.
      

  5.   

    现在运行到"Type[] types = tmp.GetTypes();"会抛出以下异常,
    无法加载一个或多个请求的类型。有关更多信息,请检索 LoaderExceptions 属性。
    不知道为什么,可在自己写的DLL测试是没问题的,可我要最终应用的是一个继承至接口的类,
    就会出错!
      

  6.   

    好了,解决了,最后报错是因为一个或多个引用的DLL文件找不到.