/// <summary> /// 删除一个dll文件 /// </summary> /// <param name="path"></param> public void DeletDllFilePath(DllFile path) { MyDllFiles.Remove(path); ModityPicTabPageFunction(); }
/// <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); }