コード例 #1
0
 /// <summary>
 /// 删除一个dll文件
 /// </summary>
 /// <param name="path"></param>
 public void DeletDllFilePath(DllFile path)
 {
     MyDllFiles.Remove(path);
     ModityPicTabPageFunction();
 }
コード例 #2
0
        /// <summary>
        /// 把dll文件转换为可以利用的资源
        /// </summary>
        /// <param name="dll">dll文件的路径</param>
        /// /// <param name="ProjectClassType">项目可选类型</param>
        /// <returns>返回可以利用的资源</returns>
        public static MyXTreeItem GetDllResources(DllFile dll, Dictionary <string, string> ProjectClassType = null)
        {
            Assembly    assembly = Assembly.LoadFrom(dll.Path);
            MyXTreeItem ReData   = new MyXTreeItem();

            ReData.XName         = dll.Name;
            ReData.TypeImagePath = "";
            ///获取所有的类型
            Type [] alltypes = assembly.GetTypes();
            ///循环所有类型
            foreach (Type item in alltypes)
            {
                ///如果传进来一个类型变量引用
                if (ProjectClassType != null)
                {
                    ///添加可选类型
                    ProjectClassType.Add(item.FullName, item.Name);
                }
                MyXTreeItem classdata = new MyXTreeItem();
                classdata.XName         = item.Namespace + "." + item.Name;
                classdata.TypeImagePath = "";
                #region 添加Proper内容
                ///获取所有访问器属性
                PropertyInfo[] pros = item.GetProperties();
                ///循环所有访问器
                MyXTreeItem prosdata = new MyXTreeItem();
                prosdata.XName         = "Properties";
                prosdata.TypeImagePath = "";
                foreach (PropertyInfo info in pros)
                {
                    if (info.GetGetMethod(false) != null)
                    {///具体的访问器属性(GET)
                        MyXTreeItem proindataGet = new MyXTreeItem();
                        proindataGet.XName         = "Get" + info.Name;
                        proindataGet.MyCodeBoxType = MyCodeBox.CodeBox.XAType.get;
                        proindataGet.TypeImagePath = "";
                        proindataGet.MyHitText     = "";
                        ///添加一个该属性的Get代码块(get方法)
                        SetPropGetValue(proindataGet, info);
                        prosdata.ChildrenItem.Add(proindataGet);
                    }

                    if (info.GetSetMethod(false) != null)
                    {///具体的访问器属性(SET)
                        MyXTreeItem proindataSet = new MyXTreeItem();
                        proindataSet.XName         = "Set" + info.Name;
                        proindataSet.MyCodeBoxType = MyCodeBox.CodeBox.XAType.set;
                        proindataSet.TypeImagePath = "";
                        proindataSet.MyHitText     = "";
                        ///添加一个该属性的Get代码块(get方法)
                        SetPropSetValue(proindataSet, info);
                        prosdata.ChildrenItem.Add(proindataSet);
                    }
                }
                classdata.ChildrenItem.Add(prosdata);
                #endregion
                #region 添加fieldinfos内容
                ///获取该类型中所有的字段
                FieldInfo[] fieldinfos     = item.GetFields();
                MyXTreeItem fieldinfosdata = new MyXTreeItem();
                fieldinfosdata.XName         = "Fieldinfos";
                fieldinfosdata.TypeImagePath = "";
                fieldinfosdata.MyHitText     = "";
                foreach (FieldInfo info in fieldinfos)
                {
                    ///添加Get类型
                    MyXTreeItem fieldinfosdataGet = new MyXTreeItem();
                    fieldinfosdataGet.XName         = "Get" + info.Name;
                    fieldinfosdataGet.MyCodeBoxType = MyCodeBox.CodeBox.XAType.get;
                    fieldinfosdataGet.TypeImagePath = "";
                    fieldinfosdataGet.MyHitText     = "";
                    ///添加一个该属性的Get代码块(get方法)
                    SetPropGetValue(fieldinfosdataGet, info, classdata.XName);
                    fieldinfosdata.ChildrenItem.Add(fieldinfosdataGet);

                    ///添加Set类型
                    MyXTreeItem fieldinfosdataSet = new MyXTreeItem();
                    fieldinfosdataSet.XName         = "Set" + info.Name;
                    fieldinfosdataSet.MyCodeBoxType = MyCodeBox.CodeBox.XAType.set;
                    fieldinfosdataSet.TypeImagePath = "";
                    fieldinfosdataSet.MyHitText     = "";
                    ///添加一个该属性的Get代码块(get方法)
                    SetPropSetValue(fieldinfosdataSet, info, classdata.XName);
                    fieldinfosdata.ChildrenItem.Add(fieldinfosdataSet);
                }
                classdata.ChildrenItem.Add(fieldinfosdata);
                #endregion
                #region 添加方法
                MethodInfo [] methodlinfos    = item.GetMethods();
                MyXTreeItem   methodlinfodata = new MyXTreeItem();
                methodlinfodata.XName         = "公共方法集合";
                methodlinfodata.TypeImagePath = "";
                methodlinfodata.MyHitText     = "该类型的所有方法";
                foreach (MethodInfo info in methodlinfos)
                {
                    if (!((info.Name.Substring(0, 4) == "set_" || info.Name.Substring(0, 4) == "get_") && info.IsSpecialName))
                    {
                        ///添加一个方法数据
                        MyXTreeItem methodlnfoitem = new MyXTreeItem();
                        methodlnfoitem.XName = info.Name;
                        //methodlinfodata.MyCodeBoxType = MyCodeBox.CodeBox.XAType.XFunction;
                        methodlnfoitem.TypeImagePath = "";
                        methodlnfoitem.MyHitText     = "";
                        SetMethodInfoXAribute(methodlnfoitem, info);
                        ///添加一个方法
                        methodlinfodata.ChildrenItem.Add(methodlnfoitem);
                    }
                }
                classdata.ChildrenItem.Add(methodlinfodata);
                #endregion
                ReData.ChildrenItem.Add(classdata);
            }
            return(ReData);
        }