作者Jnaive (风车 郁金香)
看板C_Sharp
标题[问题] 请教有关Reflection的关念
时间Sun Jul 27 16:03:55 2008
我现在有一个满大的class阶层,大约有一百八十几个,
这结构是对映到一个xml的规范,
当我在parse xml文件时,会用.net把xml文件转成对映到这class阶层的结构,
这样方便我以物件阶层的方式来处理xml。
我有个需求,我需要知道class A里面是否有class B,但A里面的Fields也是物件,
这样会有许多层,於是我就想到用递回来写,可是一百八十几个class,
我在写递回就要写一百八十几个switch 的 case,
我才写几个case就累了,
於是就想用Reflection来写,Reflection可以用GetFields,刚刚试了一下,
应该可以使用。
我想问的是这两种方式哪个比较好?因为我想到用Reflection不就是run time时才决定,
那会不会效能较差,不过递回虽然是有编译过,但以前老师总是说递回会一直做
function call,效能也是会比较差。不过现在在c#是不是比较不在意function call的
cost?总觉得物件导向在设计时都会把function定清楚,做的事情相当单纯,function
老是call来call去的。
请问一下各位,要是你们会用递回来写,还是用Reflection来写?哪一种比较好?
如果我上面说的观念有错,也麻烦纠正我一下。
谢谢大家。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.168.182.5
1F:推 marukocc:可以看.NET Serialization,里面应该有XML的方式 07/27 16:33
2F:→ marukocc:若是二选一的,我会用reflection 07/27 16:33
3F:推 tomex:function call cost指的是跳跃编译成本,跟inline相比 07/29 01:12
4F:推 tomex:递回最大的成本不是function call,而是区域变数的保留成本 07/29 01:12
5F:推 KENyroj:找一下 XmlSerialization 吧 .. 好东西耶! [效能不详 XD] 07/29 01:20
6F:→ petrushka:我也有类似专案,我是用reflection的,弹性与效能有时不能 07/31 13:52
7F:→ petrushka:两全其美 07/31 13:52
8F:→ petrushka:如果专案完成真的有效能瓶颈,尝试自己加入caching的功能 07/31 13:53