单例类
public class snappingclass : isnappingenvironment, iextension { // private static readonly snappingclass instance = null; static snappingclass() { instance = new snappingclass(); } private snappingclass() { } public static snappingclass instance { get { return instance; } }
动态创建:
void iextensionmanageradmin.startupextensions(string componentcategory, string jitcategory, ref object initializationdata) { var typeinfos = appdomain.currentdomain.getassemblies().selectmany(a => a.gettypes().where(t => t.getinterfaces().contains(typeof(iextension)))).toarray(); foreach (var typeinfo in typeinfos) { //console.writeline(typeinfo.fullname); //iextension pextension = typeinfo.assembly.createinstance(v.fullname) as iextension; //methodinfo methodinfo = typeinfo.getmethod("instance", bindingflags.nonpublic | bindingflags.static, null, new type[] { }, null); //iextension pextension = methodinfo.invoke(null, null) as iextension; // propertyinfo propertyinfo = typeinfo.getproperty("instance", bindingflags.public | bindingflags.nonpublic | bindingflags.static); // //propertyinfo[] propertyinfos = typeinfo.getproperties(bindingflags.public | bindingflags.nonpublic | bindingflags.static); //foreach (propertyinfo propertyinfo in propertyinfos) //{ // console.writeline(propertyinfo.name); //} iextension pextension = propertyinfo.getvalue(null, null) as iextension; // pextension.startup(ref initializationdata); this.pextensionlist.add(new keyvaluepair<string, iextension>(pextension.name, pextension)); } }
-----------------------------------------------------------------------------------------
如对本文有疑问, 点击进行留言回复!!
使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)
C#实现获取本地内网(局域网)和外网(公网)IP地址的方法分析
网友评论