编程找出C#中所有的类、接口、枚举、结构的相关信息(高手请进)
编程找出C#中所有的类、接口、枚举、结构的相关信息(可写入一个文件),结于枚举要列出其枚举值(比如名字空间SYSTEM下到底有多少个枚举?,其枚举值是?),注意要用编程的方法!!! 问题点数:100、回复次数:31Top
1 楼cho__cho(业精于勤,慌于嘻!行成于思,毁于随!)回复于 2006-11-10 19:06:20 得分 1
sj
空了做Top
2 楼lin6234123456(青古)回复于 2006-11-10 19:12:27 得分 0
只是System下也行,要代码.(目的:学习和好喜!!)Top
3 楼Csharp110(~泰山~)回复于 2006-11-10 19:23:40 得分 1
学习中,帮顶吧!Top
4 楼lin6234123456(青古)回复于 2006-11-10 19:36:19 得分 0
请高手解答一下,说不可能也可以,要把条件改小也行,请大家相互转告!!Top
5 楼free_wang()回复于 2006-11-10 19:38:53 得分 1
upTop
6 楼lin6234123456(青古)回复于 2006-11-10 19:51:18 得分 0
我准备再增加100分(可没有权限),这是个宏观题,说不定要去问微软!!
我要得到这样的格式:
名称 类别(类、接口、结构、枚举、枚举值) 继承于 所属名字空间 其他说明Top
7 楼lin6234123456(青古)回复于 2006-11-10 19:53:31 得分 0
就是能从VS2005的智能提示中导出也不错!!(纯业余爱好!!!)Top
8 楼lin6234123456(青古)回复于 2006-11-10 20:52:09 得分 0
自己顶!知道的怕不多!Top
9 楼balenoww(名花虽有主,锄头更无情,只要锄头挥得好,哪有墙角挖不倒!)回复于 2006-11-10 23:27:44 得分 1
实力不够,也不想做无用功Top
10 楼lin6234123456(青古)回复于 2006-11-11 09:28:09 得分 0
自己顶!不让沉Top
11 楼oolongTea(顶者)回复于 2006-11-11 09:33:32 得分 2
用反射试试Top
12 楼lin6234123456(青古)回复于 2006-11-11 09:43:53 得分 0
楼上的,请你试一试,然后告诉一声:可行不,本人是业余爱好,
我要得到这样的格式:
名称 类别(类、接口、结构、枚举、枚举值) 继承于 所属名字空间 其他说明
Top
13 楼zwcscq()回复于 2006-11-11 11:08:39 得分 2
加特征,用反射Top
14 楼raozhiven(朗屹)回复于 2006-11-11 12:06:05 得分 50
//这里加载的一 System.Object 所在的程序集,你也可以指定其它
System.Reflection.Assembly assembly = typeof(object).Assembly;
Type[] types = assembly.GetTypes();
foreach (Type type in types)
{
//仅 System 命名空间的限制
if (type.Namespace == null || type.Namespace != "System")
{
continue;
}
if (type.IsEnum)
{
//列出枚举类型中的所有值
Array vals = Enum.GetValues(type);
foreach (object val in vals)
{
Console.WriteLine("Type: {0} --> {1}", type, val);
}
}
}
Console.Read();
Top
15 楼lin6234123456(青古)回复于 2006-11-11 12:37:36 得分 0
好,我先测试一下,请继续!!Top
16 楼lin6234123456(青古)回复于 2006-11-11 12:43:06 得分 0
不错(已找出System.Object的枚举),System.Object下所有的类?
Top
17 楼lin6234123456(青古)回复于 2006-11-11 12:55:01 得分 0
以下找出System下的Class
System.Reflection.Assembly assembly = typeof(object).Assembly;
Type[] types = assembly.GetTypes();
foreach (Type type in types)
{
//仅 System 命名空间的限制
if (type.Namespace == null || type.Namespace != "System")
{
continue;
}
if (type.IsClass)
{
//列出枚举类型中的所有值
// Array vals = Enum.GetValues(type);
// foreach (object val in vals)
// {
Console.WriteLine("Class: {0} ", type);
// }
}
}
Console.Read();Top
18 楼zerg318()回复于 2006-11-11 13:31:04 得分 1
不能自己顶了把 ^_^ !!Top
19 楼zlkingdom(风之悲伤)回复于 2006-11-11 13:35:14 得分 2
肯定是要用反射的,但是反射好象取不到这么多的细节特征Top
20 楼raozhiven(朗屹)回复于 2006-11-11 13:39:01 得分 0
怎么取不到这么多的细节特征?
Reflector就是用的反射,连源代码都能看得一清二楚。Top
21 楼icdbow(旺仔)回复于 2006-11-11 13:45:18 得分 2
用反射,都可以的,我做过了,还可以反射出其他应用程序的类.Top
22 楼lin6234123456(青古)回复于 2006-11-11 13:55:02 得分 0
其实回答这个问题去问Reflector的作者是最清楚不过了!(幽默一下)
谁会用"反射"能回答本人这个问题(VS2005中的名称 类别(类、接口、结构、枚举、枚举值) 继承于 所属名字空间 其他说明))
请继续顶!raozhiven(朗屹)写个详细点得!
Top
23 楼zerohk(零度空间)回复于 2006-11-11 14:12:08 得分 2
用反射Top
24 楼arest(凄凄迷人)回复于 2006-11-11 14:12:54 得分 0
没搞过这么复杂的反射。。帮你顶一下。。呵呵Top
25 楼lin6234123456(青古)回复于 2006-11-11 15:39:18 得分 0
继续顶!Top
26 楼aling9801()回复于 2006-11-11 16:10:31 得分 35
以下找出System下的Class
System.Reflection.Assembly assembly = typeof(object).Assembly;
Type[] types = assembly.GetTypes();
foreach (Type type in types)
{
if (type.IsClass)
{
//列出枚举类型中的所有值
// Array vals = Enum.GetValues(type);
// foreach (object val in vals)
// {
Console.WriteLine("Class: {0} ", type);
// }
}
}
Console.Read();
查找一下Assembly的方法.Top
27 楼lin6234123456(青古)回复于 2006-11-11 16:17:04 得分 0
问题已搂近答案,准备明天结贴.大家再关注一下.Top
28 楼lin6234123456(青古)回复于 2006-11-11 17:19:02 得分 0
并没有想像的难!!Top
29 楼panjing123(Alma)回复于 2006-11-11 22:35:26 得分 0
我有个愚蠢的方法,用文件的形式查找字符串,查找cs文件下的所有的接口关键字,你们别笑我啊,这个是挺笨的方法Top
30 楼wuya2004()回复于 2006-11-12 11:02:03 得分 0
飘过!
很是实用!
谢谢!Top
31 楼zwcscq()回复于 2006-11-12 17:03:45 得分 0
你娃是怎么给分的哟...我给的是解决方案的核心意思,才给2分.....Top




