CNDEV
CNDEV.ORG
当前在线
论坛
CBD
程序员情感CBD
程序员见面交流会
CBD开发区
Java/J2ME
.NET/C#
数据库
Delphi/BCB
Visual C
其它
修真养身
中国象棋
纪念日
谈钱太俗,还是投机吧
听音乐
iCosta
资源共享
一隅
好文共赏
看电影看美剧
待定
狗屎
雪域召唤
工作流
专业显摆区
语录
情感
批评与自我批评
爱情故事
发牢骚
看三点区
游戏
CNDEV-CS/WOW
浩宇长空
生活
家有XPH
我爱学英语
美食天地ORG
半调子体育迷
观澳园友邻
搞笑奇文
拍照片
我读书我存在
论坛系统
超级垃圾站
系统建议及BUG
系统测试
中国开发网
: 论坛:
程序员情感CBD
: 贴子 632537
龙之吻
:
genClientCode该如何实现?
[阅读: 595] 2008-05-21 00:00:12
<空>
相关信息:
[技术贴]请教各位达人高手。
(2663字)
(
龙之吻
[694]
2008-05-20 08:56
)
这个时候就想起宏的好处了
(32字)
(
haitao
[521]
2008-05-20 09:27
)
很时髦的什么?
(空) (
JoJo
[424]
2008-05-20 09:39
)
Jojo都不知道这个名称啊!?
(18字)
(
haitao
[487]
2008-05-20 09:42
)
靠,打倒卖关子的。。。
(空) (
JoJo
[386]
2008-05-20 09:43
)
还是holly牛揭榜了!
(16字)
(
haitao
[537]
2008-05-20 12:43
)
赶紧给奖品
(空) (
holly
[466]
2008-05-20 13:53
)
来来来,排排坐,吃果果
(24字)
(
haitao
[460]
2008-05-20 14:18
)
联系与区别
(116字)
(
sealw
[558]
2008-05-21 00:06
)
海豹人还是值得期待的
(14字)
(
haitao
[552]
2008-05-21 00:54
)
where, where, 跟诸位大牛、大师学习
(空) (
sealw
[397]
2008-05-21 01:19
)
呃。。。
(7字)
(
JoJo
[485]
2008-05-20 09:39
)
大牛
(3字)
(
龙之吻
[417]
2008-05-20 10:11
)
如果是Java,基本上是一个泛型方法
(68字)
(
sealw
[570]
2008-05-20 10:00
)
呃,个人觉得用接口更好
(16字)
(
JoJo
[480]
2008-05-20 10:05
)
Guice的对象工厂就是这么干的
(131字)
(
sealw
[506]
2008-05-20 10:20
)
那是为了一个通用解决方案,而这个明显不是
(17字)
(
JoJo
[480]
2008-05-20 10:24
)
大牛,给支点招
(空) (
龙之吻
[380]
2008-05-20 10:26
)
通用的实例化逻辑,通用的初始化逻辑,咋就不行捏?
(空) (
sealw
[447]
2008-05-20 10:37
)
可以,但是没好处,对这系统来说getInstance(Object)有啥意义呢?
(41字)
(
JoJo
[858]
2008-05-20 10:42
)
给定一个类型,得到这个类型的实例,并对该实例执行必要的初始化操作,这就是工厂干的活了。没理解错的话,他是想干这些事吧?
(空) (
sealw
[481]
2008-05-20 10:50
)
不是,他需要调用特定类型的特定方法处理细节,这不是工厂应该做的
(12字)
(
JoJo
[444]
2008-05-20 10:53
)
C#跟Java不一样,没有特别的初始化操作
(36字)
(
JoJo
[551]
2008-05-20 10:55
)
l
(空) (
龙之吻
[417]
2008-05-20 23:49
)
大牛,我觉得泛型写不出来
(170字)
(
龙之吻
[459]
2008-05-20 10:10
)
我会使用接口设计这个系统,而不是范型
(42字)
(
JoJo
[501]
2008-05-20 10:27
)
我试试看
(3字)
(
龙之吻
[460]
2008-05-20 10:29
)
我怎么抽象出来借口呢?
(空) (
龙之吻
[458]
2008-05-20 10:37
)
您是不是说这个意思?
(791字)
(
龙之吻
[519]
2008-05-20 10:21
)
你想达到的是不是这个结果?
(空) (
sealw
[418]
2008-05-20 10:39
)
是的
(44字)
(
龙之吻
[462]
2008-05-20 10:40
)
我不熟悉C#语法,取不到是什么意思呢?
(空) (
sealw
[694]
2008-05-20 10:47
)
就是没法用.符号引用,因为此时类型未知。
(空) (
JoJo
[451]
2008-05-20 10:51
)
对啊,还是一个不知道的东西呢
(93字)
(
龙之吻
[508]
2008-05-20 10:52
)
如果你使用C# 3.0和.Net 3.5也许可以简化一下代码
(56字)
(
JoJo
[569]
2008-05-20 10:59
)
var能推断出来么?我试试先。
(4字)
(
龙之吻
[406]
2008-05-20 23:49
)
还是不知道如何写
(空) (
龙之吻
[412]
2008-05-20 23:57
)
var不是这么用滴
(空) (
Miracle
[409]
2008-05-21 19:24
)
如果是Python,基本上是一个字符串调用
(21字)
(
leejd
[437]
2008-05-20 10:09
)
哭
(空) (
龙之吻
[413]
2008-05-20 10:11
)
实际上,你的问题是很典型的工厂模式问题
(289字)
(
sealw
[544]
2008-05-20 10:16
)
但是Service1 和Service2是系统的。我没法王里写代码
(空) (
龙之吻
[456]
2008-05-20 10:20
)
如果Service1和Service2没有任何关系,只是都有init方法,在Java里还可以用反射来做
(20字)
(
sealw
[517]
2008-05-20 10:29
)
接口,继承,类工厂,类类型.....
(6字)
(
pcplayer
[440]
2008-05-20 10:20
)
是啊,这里很明显使用工厂模式
(9字)
(
JoJo
[458]
2008-05-20 10:32
)
当然是代码生成器
(空) (
holly
[464]
2008-05-20 11:27
)
吼吼,genClientCode("Service1");genClientCode("Service2");
(空) (
sealw
[439]
2008-05-20 11:30
)
genClientCode该如何实现?
(空) (
龙之吻
[594]
2008-05-21 00:00
)
大牛出的招,不一定适合你练
(247字)
(
sealw
[481]
2008-05-21 00:21
)
很复杂的 那个if语句不会生成 CodeDOM,还有生成了CodeDOM不知道如何和现在的类关联在一起
(空) (
龙之吻
[588]
2008-05-21 08:48
)
还是没有写出来。谢谢楼上的各位牛牛的指点
(空) (
龙之吻
[429]
2008-05-21 08:46
)
小伙子,看看这个是不是你想要的。VS2008里面简单测试了一下,应该符合你的需求
(5642字)
(
Miracle
[819]
2008-05-21 19:13
)
关键就是用ServiceClientWrapper<T>来抽象你那几个具有共同行为,并不实现同一个接口,你也无法修改的ServiceXClient类
(空) (
Miracle
[497]
2008-05-21 20:39
)
Main()里面写错了一点,而且反复调用Abort,可能让人搞不清Abort到底是被Main还是ServiceFactory.GetInstance调用的,这里改了,清楚些。
(6637字)
(
Miracle
[764]
2008-05-21 20:50
)
如果几个ServiceClient压根没有共同特性,那就没辙了。不过从你需求看起来,不是这个情况。
(空) (
Miracle
[533]
2008-05-21 20:53
)
友情提示,最终调用通过反射完成,性能不太理想。有时候看起来比较整洁的设计,不见得就是好的,如果你需要代码调用越快越好,还是用code generation吧,没有反射的开销
(41字)
(
Miracle
[533]
2008-05-21 21:11
)
看来还是有联系的
(94字)
(
sealw
[408]
2008-05-21 23:11
)
在Java中是这样的情况
(454字)
(
sealw
[551]
2008-05-21 23:34
)
对,List<A>和List<B>仅仅是具备一致的行为特征。.NET会为他们生成类似List`1和List`2这样的新隐含类型(知道名字,但是不能这么引用),它们之间是没有父子关系的
(空) (
Miracle
[525]
2008-05-21 23:51
)
写了个简单的程序,验证了一下我不确定的东西
(309字)
(
sealw
[484]
2008-05-22 00:08
)
.NET的泛型不是这么搞的。List<T>是这么声明的
(120字)
(
Miracle
[604]
2008-05-22 00:59
)
“那个家伙设计的语言复杂得一塌糊涂” -- 饭桌语录
(空) (
sealw
[503]
2008-05-22 01:02
)
呵呵,其实这样也可以的,用IList或者其他接口测试也是一样。尽管没有了继承关系,但是仍然透过接口完整保留泛型所要强调的行为特性
(空) (
Miracle
[608]
2008-05-22 16:12
)
C#语法现在也这么复杂了
(空) (
lukejee
[727]
2008-05-22 08:20
)
这句话看起来就像有人今天才突然发现“Java也有元数据机制了啊”
(48字)
(
Miracle
[430]
2008-05-22 16:16
)
现在大家都是互相复制对方比较好的概念,Java和.NET的东西很多相通的
(空) (
Miracle
[624]
2008-05-21 23:48
)
想到一点,应该可以利用代码生成器来实现Spring、Guice这样的IOC容器,抛弃反射机制
(235字)
(
sealw
[742]
2008-05-22 00:47
)
还是不大明白代码生成器和自己写的代码怎么联系到一起?
(空) (
龙之吻
[485]
2008-05-22 00:48
)
把这个问题留在心里,有一天你会突然明白的
(空) (
sealw
[376]
2008-05-22 00:56
)
早上起来就看到了好消息,感谢米奇迹。我回去试试。
(空) (
龙之吻
[427]
2008-05-22 00:47
)
感谢老M,还是有一个地方不大明白
(319字)
(
龙之吻
[540]
2008-05-22 01:58
)
哈,你要原始类型的话,就把instance作为只读暴露出来,自己强制转换一下吧。
(空) (
Miracle
[432]
2008-05-22 02:23
)
稍微改了一下ServiceClientWrapper<T>,还是用泛型满足需求,前面忘了考虑你要使用原始类型的需求了
(1734字)
(
Miracle
[517]
2008-05-22 13:33
)
这样改了以后的好处,就是一旦通过工厂方法获得了单件实例,你就可以不必通过反射调用其他的实例成员了,性能就很理想了。
(空) (
Miracle
[508]
2008-05-22 16:23
)
老M的代码给我指引了方向,终于写出来了。感谢老M和海豹王等牛的热心帮助
(2550字)
(
龙之吻
[554]
2008-05-22 07:13
)
你的代码是不是搞复杂了,我试着改了改,不一定对。
(1073字)
(
qyuhen
[556]
2008-05-22 09:27
)
嗯,死丢的小弟很谦虚啊
(空) (
pigprince
[443]
2008-05-22 09:30
)
我不认识死丢,听说过而已。
(空) (
qyuhen
[417]
2008-05-22 09:32
)
感谢雨大师,这里WCF就属你最熟悉了。
(空) (
龙之吻
[387]
2008-05-22 10:38
)
好,加上where约束之后,显得更清楚些了。
(空) (
Miracle
[400]
2008-05-22 17:33
)
这样写简化了代码,不过也导致了Singleton<T>这个类的混乱,使它不纯粹了。混入了与Singleton无关的东西了。尽管这样不影响功能,但还是建议拆开
(空) (
Miracle
[757]
2008-05-22 17:47
)
又重新写了一下。
(2441字)
(
龙之吻
[449]
2008-05-23 04:51
)
嗯,差不多了,可以了。
(空) (
Miracle
[374]
2008-05-23 05:27
)
我靠大哥,你又C#去了?
(空) (
Apache
[504]
2008-05-23 05:32
)
这个贴怎么还没被转?
(空) (
风无影
[359]
2008-05-22 14:59
)
欢迎光临本社区,您还没有登录,不能发贴子。请在
这里登录