上海新世纪影城官网,古朴典雅的意思,三亚天气预报15天
主函数导出某一程序集autocad 注册命令
/// <summary> ///提取所有的命令 /// </summary> /// <param name="dllfiles">dll的路径</param> /// <returns></returns> public static list<gcaddllcmd> getdllcmds(params string[] dllfiles) { list<gcaddllcmd> res = new list<gcaddllcmd>(); list<gcadcmds> cmds = new list<gcadcmds>(); #region 提取所以的命令 for (int i = 0; i < dllfiles.length; i++) { assembly ass = assembly.loadfile(dllfiles[i]);//反射加载dll程序集 var clscollection = ass.gettypes().where(t => t.isclass && t.ispublic).tolist(); if (clscollection.count > 0) { foreach (var cls in clscollection) { var methods = cls.getmethods().where(m => m.ispublic && m.getcustomattributes(true).length > 0).tolist(); if (methods.count > 0) { foreach (methodinfo mi in methods) { var atts = mi.getcustomattributes(true).where(c => c is commandmethodattribute).tolist(); if (atts.count == 1) { gcadcmds cmd = new gcadcmds(cls.name, mi.name, (atts[0] as commandmethodattribute).globalname, ass.manifestmodule.name.substring(0, ass.manifestmodule.name.length - 4)); cmds.add(cmd); } } } } } } #endregion if (cmds.count > 0) { list<string> dllname = new list<string>(); foreach (var item in cmds) { if (!dllname.contains(item.dllname)) dllname.add(item.dllname); } foreach (var item in dllname) res.add(new gcaddllcmd(item, cmds)); } return res; // }
1# 定义自定义的class,
/// <summary> /// 储存自定义的cad命令的信息的类 /// </summary> public class gcadcmds { public string clsname { get; set; } public string cmdname { get; set; } public string cmdmacro { get; set; } public string dllname { get; set; } public gcadcmds(string _clsname, string _cmdname, string _macro, string _dllname) { this.dllname = _dllname; this.clsname = _clsname; this.cmdmacro = _macro; this.cmdname = _cmdname; } }
2# 定义类
/// <summary> /// 储存包含自定命令的类 /// </summary> public class gcadclscmd { public string clsname { get; set; } public string dllname { get; set; } public bool hasgcadcmds { get; set; } public list<gcadcmds> curclscmds { get; set; } public gcadclscmd(string _clsname, list<gcadcmds> cmds) { this.clsname = _clsname; this.dllname = cmds.first().dllname; var clscmds = cmds.where(c => c.clsname == this.clsname).tolist(); if (clscmds.count > 0) { this.hasgcadcmds = true; this.curclscmds = new list<gcadcmds>(); foreach (var item in clscmds) { if (item.clsname == this.clsname) this.curclscmds.add(item); } } else this.hasgcadcmds = false; } }
3# 存储每个dll的
/// <summary> /// 储存每个dll类的 /// </summary> public class gcaddllcmd { public string dllname { get; set; } public bool hasgcadcls { get; set; } public list<gcadclscmd> clscmds { get; set; } public list<gcadcmds> curdllcmds { get; set; } public gcaddllcmd(string _dllname, list<gcadcmds> cmds) { this.dllname = _dllname; var curdllcmds = cmds.where(c => c.dllname == this.dllname).tolist(); if (curdllcmds.count > 0) { this.hasgcadcls = true; this.curdllcmds = curdllcmds; list<string> listclsname = new list<string>(); foreach (gcadcmds item in this.curdllcmds) { if (!listclsname.contains(item.clsname)) listclsname.add(item.clsname); } this.clscmds = new list<gcadclscmd>(); foreach (var item in listclsname) { gcadclscmd clscmds = new gcadclscmd(item, this.curdllcmds.where(c => c.clsname == item).tolist()); this.clscmds.add(clscmds); } } else this.hasgcadcls = false; } }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论