问题描述
一个程序集的一个类中定义了一个范型属性:List<stirng>Member;我用反射加载该程序集获取该类型的定义后,如何把该属性的名称输出为:List<stirng>呢?
解决方案
解决方案二:
Typet=Assembly.Gettype("命名空间.类名")PropertyInfo[]pro=t.GetProperties();foreach(PropertyInfopinpro){Console.WriteLine(p.PropertyType);}
解决方案三:
privatestaticreadonlystringpath=ConfigurationManager.AppSettings["FactoryKey"].ToString();publicstaticIAdbannerCreateAdbanner(){stringclassname=path+".Adbanner";return(IAdbanner)System.Reflection.Assembly.Load(path).CreateInstance(classname);}
解决方案四:
Type[]types=Assembly.LoadFrom(@"路径xxx.dll").GetTypes();foreach(varitemintypes){Console.WriteLine(item.Name);foreach(varattrsinitem.GetProperties()){Console.WriteLine("t"+attrs.PropertyType+""+attrs.Name);}}
解决方案五:
范型采用以上的方法返回的是乱码呀?
解决方案六:
怎么会是乱码?
解决方案七:
Typet=Type.GetType("命名空间.类名");PropertyInfo[]pro=t.GetProperties();PropertyInfop=t.GetProperty("Member");stringtypeName=p.PropertyType.ToString();Microsoft.CSharp.CSharpCodeProviderccp=newMicrosoft.CSharp.CSharpCodeProvider();System.CodeDom.CodeTypeReferencenewCodeTypeReference=newSystem.CodeDom.CodeTypeReference(typeName);Console.WriteLine(ccp.GetTypeOutput(newCodeTypeReference));
解决方案八:
publicclassBase{publicvoidAA(){Typetype=this.GetType();stringaaa=type.Name;}}publicclassChild:Base{this.a();}