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