给儿子找学校,先找到买的房子旁边好一点的学校(安亭小学),
对方问:上海人吗?
答:不是。
又问:在上海买房子了吗?
答:有,但是在花桥(花桥与安亭一路之隔,但一个是江苏,一个是上海)。
又问:有上海的人才引进的居住证吗?
答:没有(本人高中,学历不够,不能办理)。

好吧,不要贪心,规规矩矩到花桥找一个对口学校吧。
对方问:当地人吗?
答:不是。
对方问:买房子了吗?
答:有(有戏?)。
对方问:多大?
答:40平方。
对方:不行,必须80平方以上。
又问:你在昆山工作吗?
答:不是,我在上海工作。

又无果。

另外一件事情还是跟这个差不多。今天看见一个新闻:《关于2008年度上海市住房公积金缴存基数和比例的通知》,中有一句:
国家机关、国有企业、城镇集体企业、外商投资企业、城镇私营企业及其他城镇企业、事业单位、民办非企业单位、社会团体应依法为与其建立劳动关系的本市及外省市城镇户口职工缴存住房公积金。
又再次的证明自己是下等公民,因为我是外省市农村户口。

posted @ 2008-06-25 16:03 编写人生 阅读(123) | 评论 (0)编辑
     摘要: 养老保险是个骗人的东西;
存款又无法解决通货膨胀;
股票到底如何呢?让我们看看。  阅读全文
posted @ 2008-06-19 14:22 编写人生 阅读(111) | 评论 (0)编辑
您可以阅读我其他的发明创想:
使用遥控器控制汽车,实现高难度的泊车(发明畅想)

取款机钱箱没有钱提示(发明畅想)
微型电动轿车(发明畅想)
智能电视的设想(发明畅想)
压缩空气动力自行车

首先我声明:我并不知道有没有人发明空中投影技术(例如使用激光在空中制造出图像),也就更不知道实现的技术了。我只是想到这种技术的应用。

有次我看见一个小车想左转掉头,于是在左车道停下来,后面的车马上停下试图调整到右侧超过,再后面的车呢看不到第一辆车,于是想从左侧超,可惜突然看见前面还有一个车,赶紧刹车,很危险。

于是,我就想,如果前面的车顶(空中,而且要稍微高一些)投影出一个左方向箭头,那岂不是很好,后面的车虽然看不见前面的车,但是可以看见空中有个投影,知道危险要慢下来。

同样的道理,还可以将箭头投影到前面的道路上,在你从一个小巷子要出来时很有用。
posted @ 2008-06-16 13:37 编写人生 阅读(38) | 评论 (0)编辑
如果产品非常好,价格却非常低,企业一定能够成功。自己想了想,有哪些呢?
微软 - 不要误会,微软的产品价格的确很低的,如果你和其他公司的产品对比就知道了;
苹果的IPhone - 卖的火啊,他的3G更是便宜;
沃尔玛 - 超市的典范;
麦当劳 - 快餐类的典范;
碧桂园 - 房地产薄利多销的典范;

那么产品好,但是卖的死贵的有成功的吗?
思科 - 目前还行,但是明显走下坡路了;
索尼 - 也是一样。
IBM - 只能搞项目了,已经脱离群众了。

所以说,我们常说的商人应该 : 利润最大化,简直是骗死人不偿命,是最短见的行为。
posted @ 2008-06-13 11:44 编写人生 阅读(54) | 评论 (0)编辑
Linq to SQL内置缓存功能,简单的说,当你查询了一次某个键的数据后,再次查询时linq to SQL的引擎不再向数据库发送SQL,例如:

            //下面是使用LinQ to SQL 的例子,context2是派生自System.Data.Linq.DataContext的实例
            ErpLinQContextDataContext context2 = new ErpLinQContextDataContext();
            
//SQLServer事件探查器拦截到SQL语句的执行
            
//exec sp_executesql N'SELECT TOP 1 [t0].[emp_id], [t0].[fname], [t0].[minit], [t0].[lname], 
            
//                         [t0].[job_id], [t0].[job_lvl], [t0].[pub_id], [t0].[hire_date]
            
//FROM [dbo].[employee] AS [t0]
            
//WHERE [t0].[emp_id] = @p0', N'@p0 varchar(9)', @p0 = 'PMA42628M'
            employee p3 = context2.employees.First<employee>(p => p.emp_id == "PMA42628M");
            
//当我再次执行相同的查询时,LinQ to SQL 不再向SQL Server发送查询了。
            employee p4 = context2.employees.First<employee>(p => p.emp_id == "PMA42628M");

而且,这两个实例是同一个实例

            //返回的对象是同一个实例
            bool b2 = object.ReferenceEquals(p3, p4); //=true;
            p3.lname = "New Last Name";
            
bool b4 = (p4.lname == "New Last Name");  //=true;

当然,如果你使用不同的Context实例查询时,缓存功能将实效。

好,让我们再看看ADO.NET Entity Framework beta 3:

            //pubsEntites是 ADO.NET Entity Framework 的System.Data.Objects.ObjectContext派生对象
            pubsEntities context = new pubsEntities();

            
//下面语句执行时,SQLServer事件探查器拦截到SQL的执行
            
//SELECT TOP 1 [Extent1].[emp_id] AS [emp_id], [Extent1].[fname] AS [fname], [Extent1].[lname] AS [lname], 
            
//             [Extent1].[hire_date] AS [hire_date], [Extent1].[job_id] AS [job_id], [Extent1].[pub_id] AS [pub_id]
            
//FROM [dbo].[employee] AS [Extent1]
            
//WHERE N'PMA42628M' = [Extent1].[emp_id]
            Employee p1 = context.EmployeeSet.First<Employee>(p => p.EmployeeId == "PMA42628M");

            
//SQLServer事件探查器 发现SQL再次被执行
            Employee p2 = context.EmployeeSet.First<Employee>(p => p.EmployeeId == "PMA42628M");
            
//测试发现,虽然ADO.NET Entity Framework执行了两次SQL,但是他们却返回了完全相同的实例
            bool b1 = object.ReferenceEquals(p1, p2); // = true;

测试的结果是,ADO.NET Entity Framework(以下简称AEF)没有使用缓存,而是再次执行SQL,但是你要注意:两次查询的实例竟然是同一个。
从Context功能上看,他肯定持有上次查询的结果,他没有使用缓存,我只能认为可能AEF被设计成三层应用,那么他很担心其他的进程将数据改了,所以不使用缓存,当发现数据并没有改后,还是使用原先的实例,这个想法对吗?
我们再看看另外一个代码:
            //如果使用不同的上下文更新的数据,
            pubsEntities context4 = new pubsEntities();
            Employee p10 
= context4.EmployeeSet.First<Employee>(p => p.EmployeeId == "PMA42628M");
            p10.LastName 
= "Context4 changed data";
            context4.SaveChanges();

            
//旧的context再次查询时。
            Employee p11 = context.EmployeeSet.First<Employee>(p => p.EmployeeId == "PMA42628M");
            b1 
= object.ReferenceEquals(p1, p11); //= true   why??
            b1 = (p11.LastName == "Context4 changed data"); //= false  p11.LastName = "New Last Name"
难以置信,AEF重新执行了SQL,但是置新的更改而不闻,仍然返回旧的数据。这个算是Bug吗?

我不知道哪位达人能够解释这个问题?当然,这个问题我也询问了MS,他们的技术人员还未做出满意的答复。
posted @ 2008-05-14 13:54 编写人生 阅读(1186) | 评论 (3)编辑
 我不是那种“做好事不留姓名” 的那种, 纪念一下。
但还是少些这种捐款好,我的意思是希望天下太平。都不用捐款才是最好。
希望中国少些灾难,军队能够提高能力,设备先进些。
posted @ 2008-05-14 11:33 编写人生 阅读(17) | 评论 (0)编辑
    我们知道,网上很多人是很鄙视 买日本车的人 的。我不想骂人,我想讲两个事情。
    第一个就是:清朝时林则徐提出的“师夷长技以制夷”,我想用在现在的中国汽车一样正确。
    第二个是将日本侵略中国时,当时在中国有很多的诸如“翻译官”这样的职业,在当时看来,这样的职业工资是很高的,而且人家又不直接杀人,所以其实当时很多的中国人是给日本人打工的。现在套用中国汽车业,大概也能说明一些,因为日本车比起中国自主品牌来说,质量的确好很多,而且相对德国车,他的确又便宜很多。所以很多中国人还是禁不住诱惑,觉得买日本人的东西很合算。
    我坦诚说我对日本的态度:
    一,日本人很多方面不错,我们应该“师夷长技”,比如他们严谨的工作作风和科技等,
    二、日本到现在仍然对历史的错误不予悔改,这是我最不能容忍的;
    三、日本毕竟人多地少,又是个地震频发的岛国,套用他们的话“凭什么我们这么优秀的人要住在这个岛国,而那些愚昧的中国人可以享受那么好的土地”,所以只要是正常人的思维,日本人终究有一天,还是要再次侵略中国的。
    所以,我尽我最大能力不购买日本产品,并劝导朋友和同事不购买日本产品。
posted @ 2008-05-04 12:49 编写人生 阅读(51) | 评论 (1)编辑
     摘要: 以前看过文章说MarshalByRefObject 会造成性能的损失,我比较相信自己,所以亲自测试了一下,下面是代码:测试代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->usingSystem;usingSystem.Diagnostics;nam... 阅读全文
posted @ 2008-04-29 15:20 编写人生 阅读(163) | 评论 (1)编辑

请先参考《相信自己,我能》 关于读取性能的测试

今天对插入的性能做了比较,和我预期的一样,Torridity的性能和其他的产品基本打平手,而Entity Framework一样是糟糕的成绩。
为什么认为会打个平手呢?因为插入1万比记录,意味这连续发送1万次SQL,在没有提别糟糕的程序下,基本上SQL语句的执行花去了几乎大部分的时间,程序本身的优化所得到的提升几乎微乎其微。
下面是测试结果:

再次失望ADO Entity Framwork的性能,太糟糕了

posted @ 2008-04-28 18:10 编写人生 阅读(141) | 评论 (0)编辑

关于元数据结构
自动创建的代码包含一个派生自ObjectContext的对象,他有点像一个Workspace,主要包含连接、元数据和状态管理等;

ObjectContext包含一个MetadataWorkspace属性,记录了所有的元数据信息,有几种类型:
C  Space: 很全,包括数据类型(例如Byte)、函数(例如Max)、实体类型(例如Order);
CS Space:null?没有吗
OC Space:纯数据类型,一般13个;
S  Space:包括数据类型和实体类型。
你可以像下面这样的代码获取元数据
EntityType c2 = c.MetadataWorkspace.GetItem<EntityType>("DcmsCore2_TestModel.Customer", System.Data.Metadata.Edm.DataSpace.CSpace);

枚举出一个元数据对象,怎么知道是描述什么的呢?BuildtInTypeKind属性可以告诉你,常见的有:
PrimitiveType    : 原生数据类型,例如描述string的
EntityType       :实体类型,一般是ClrEntityType的实例,例如描述order
MetadataProperty : 属性,例如描述Order的属性OrderId;
Facet            :特性,用来描述是否允许null,或缺省值之类的东西,有点像CLR里面的Attribute

posted @ 2008-04-25 15:13 编写人生 阅读(35) | 评论 (0)编辑
看见一文章《比亚迪员工的心声》,原文是:
首先声明一下:本人是比亚迪公司的一名工程师,看到这么多的争议,不管是好的还是不好的评论,至少证明大家还是关注这个公司的汽车。提建议是好的,但是别带上个人的主观情趣,说句实在话我也不知道公司的车到底好不好,但是我知道的是我们确实一直在改善,也许你们觉的这个车这里缝隙大,那里配合不好,那里又怎么差的。那我想问你们一句:你们的标准是什么呢?如果你拿宝马奔驰来做标准那我劝你暂时还是不要来发表了,因为我们还没有达到那种高度,我们是民营企业,要养活十几万人,换句话说我们要生存。从开始的F3到现在的F6如果说没有改进的话我把头给你们当球踢,但是改进要一个过程,不是你今天说要改明天就可以改好了,可以说理论的东西我们可以设计到一丝不差,但实际加工出来就不是你想的那样了。每一个改进都要经过N多的程序。举个很简单的列子吧:如果要改进一个地方的配合间隙,是不是要修改其中一边的尺寸,是不是涉及到模具的尺寸,这个东西是钢铁做的,不是泥巴你捏一下它就变长了。光是这样的模具拆下来都要很长的时间更不要说加工了。所以要理性的看待问题。就像很多的F3车主说的一样,现在出来的F3比以前的工艺好多了。确实如此,
因为我们一直在努力。我们不止做汽车,我们做电池,做IT,我们的IT已经做到了0.005MM的公差。所以我们很有信心把汽车这一块做好。
当然更希望广大车友提意见到我们公司。

==============================================
我的看法是:
好热闹啊,我也插一句,我就不愤青了
说到底,商家要赢,拼到底就是看谁能够持久的提供高性价比的产品和服务,
例如,在6万这个价位上,我造的汽车比别的汽车看起来就是漂亮些,质量就是好些,就会大把有人买。
人是贪心的,很多客户买了10元的东西也会要求送货上门,为什么不可以呢?盒饭就可以,但是如果你300元买洗衣机,还要送货上面就没有人愿意了。
如果这个时候有厂家说,300元我可以卖给你洗衣机,但不提供送货上门,我敢向上帝保证:还是有人要求送货上门的,因为人是贪婪的。你可以想象,如果这个厂家坚持不送货上门,我相信结果是:客户一边骂,一边在买,然后心中窃喜,骂完了之后又打电话叫上他的大哥小弟赶快来抢。
好,我们继续,很不幸,这个厂家刚开始买的300元的洗衣机质量还是不错的(所谓质量不错,是指通常理解的不经常坏),后来觉得没有利润就开始偷工减料,质量不行了,但商家凭良心说,这个洗衣机只有10元利润了,但是这个时候客户会买单吗?不会,在这个例子中客户是不会的,为什么?因为客户愿意掏更多的钱买个质量好的洗衣机。这个钱客户觉得他掏的起掏的值,就像你可以理解一个普通的白领不会买巷子角落的1毛钱的烧饼,即使天地良心,这个烧饼成本就已经是1毛了。
我们再假设,人的智慧太厉害了,很多的厂家经过努力,他们的洗衣机也卖到300了,质量一样的好,那么这个厂家继续说,我不送货上门,还有人了他吗?还是300,还是不送货上门,为什么结果不一样了。

总之,在保证基本利润的基础上,给客户最大化的利益才是商家持久发展之道。

大家也可以参考 施乐和佳能 关于复印机的案例。
posted @ 2008-04-25 10:17 编写人生 阅读(42) | 评论 (0)编辑
这个事情应该是前几天的事情了,由于一直比较忙,所以没有写下来。
我们利用微软的网络负载平衡,假设了两台应用服务器,并在另外一台计算机部署了我们的会话服务器和SQL Server 2005服务器。
测试的结果是:
客户端面对的是一个IP地址,应用服务器将随机处理客户的请求;
有一个客户已经连接到服务器,这时我们关闭了其中一台服务器的电源(模拟服务器崩溃),我们看见客户端顺利的重定向到另外一台服务器,一起都非常平滑。

这次测试终于完成了我几年来一直追求的目标:负载平衡。他是值得纪念的事情。
posted @ 2008-04-24 14:28 编写人生 阅读(25) | 评论 (1)编辑

今天,是个值得纪念的日子,因为我编写的ORM(名为Torridity)工具经过性能测试,其读取性能全面压倒DataSet、LinQ和DataEntity Framework。

 

从截图中你可以看出,我们比DataSet快2倍,比LinQ快4倍,比Entity Framework beta 3快14倍。

测试采用读取1万笔记录,而且为公正起见,所有的计时开始前,都预先读取一笔其他的记录,保证不是连接缓冲池造成的误差。而且测试代码保证都是各自工具最佳的读取方式。

你可以下载附件中的测试程序,但非常的遗憾,Torridity属于公司的财产,所以我不能包含任何关于此部分的代码。要测试程序请:

  - 使用Visual Studio 2008打开项目;

  - 下载Entity Framework beata 3;

我将在随后的时间测试保存、插入和删除功能的性能。

LinQVsTorridity.rar 


请不要发表诸如以下的意见:都没有实际程序在那吹吧。
我想说的是,这个文章仅是为了纪念我的成果,证明自己的能力,以此纪念。
posted @ 2008-04-24 13:43 编写人生 阅读(70) | 评论 (1)编辑
     摘要: 老婆联系友邦保险的人,希望可以买些养老保险,因为我们都是外来打工人员,没有上海本地户口,也没有居住证(我们的文凭不行,只有高中),所以也不能享受四金。我们必须为我们的养老问题做准备。
  阅读全文
posted @ 2008-03-24 10:51 编写人生 阅读(444) | 评论 (13)编辑
要说言论自由,大家似乎都心照不宣,认为那是政府的问题,政府不让我们言论自由,这一点上我不否认,我也没有能力改变这点。
但是,今天的一件事情让我不得不骂人,起因是我在太平洋汽车网上看一篇文章《自主内战爆发! 比亚迪F6上市恶战4大强敌》,看的很来火, 我的感觉是一个狗腿子在他主子的教唆下,又来咬人了。当然这是我个人的意见。
扯远了,其实生气的不是这个,而是我想在太平洋网站上发表我的意见时,我再次被告知:
注:所有评论通过审核后才会被公开。
我的评论是这样的:
看来群众的眼睛是雪亮的,作者同志,老百姓没有以前那么容易忽悠了。
我不知道大家注意到没有,越是有竞争力的产品,他的“丑闻”越多,QQ、A5、F6、骏捷,哪个不是丑闻不断??
桑塔纳这么烂的车倒是美其名曰:皮实耐用。
我等了很长时间,我的评论才算是“审核通过”。
我想这就是国人的劣根吧,政府为了保护他们的利益,不允许我们言论自由,现在我们自己呢?一个个都当起了“领导”,然后唯恐别人中伤了他。
我想起我小时候妈妈教我的话:没做亏心事,不怕鬼敲门。

在点发表文章时,看见: 颇感无赖,当然,我是绝对不能也不会批评dudu的,因为dudu的这个网站目前的性质和太平洋网站是完全不同的。
posted @ 2008-03-21 09:55 编写人生 阅读(30) | 评论 (0)编辑
可以查看更多的发明畅想:
取款机钱箱没有钱提示(发明畅想)
微型电动轿车(发明畅想)
智能电视的设想(发明畅想)
压缩空气动力自行车

今天,看见一个有钱的主(又是万恶的资本主义国家的人干的)设计了这个东西:

文章的链接是:实车1:1的超级遥控汽车玩具:HUMMER H3
老实说,这绝对是很多很多的“小男孩”都想干的,大家都想到了,可是我认为这个东西应该有比玩更好的用途:
拿来泊车怎么样?
城市的实在太密集了,新手又多,使用这个东西站在车下,慢慢的倒车如何呢?是不是减少很多的碰撞。

当然,还有别的用途,可惜别人早就想到了,就是战场上,这里就不多说了。
你有更好的用途吗?不妨一起说说。
posted @ 2008-03-20 09:59 编写人生 阅读(147) | 评论 (0)编辑
可以查看更多的发明畅想:

微型电动轿车(发明畅想)
智能电视的设想(发明畅想)
压缩空气动力自行车

我们大家去自助取款机提款时经常有这样的经验,一台取款机已经没有钱了,你插入卡输入密码,一看没有钱,白忙了,只好在旁边的取款机排队,可是同样的事情不断的在后面发生,所有人都想试试看这台机器然后和你一样失望的走到这边继续排队。
所以为什么不在取款机的上方设计一个“钱箱没有钱了”的提示灯呢?最好不断的闪烁的那种。

posted @ 2008-03-20 09:45 编写人生 阅读(167) | 评论 (4)编辑
     摘要: 是关于自定义数据的简单实现,你可以这样使用。//defineConnectionStringproperty.CustomProperty<string>ConnectionStringProperty=newCustomProperty<string>("ConnectionStringProperty");//createcustomDataCustomDatadata... 阅读全文
posted @ 2008-03-10 17:30 编写人生 阅读(46) | 评论 (0)编辑
本人对发动机一窍不通,只知道有直列、V型排列,还有完全不同原理的转子发动机。今天在网上看见这个新的设计,很有意思,看看视频就知道了。
http://www.youtube.com/watch?v=WeiDdhCo7BM
posted @ 2008-02-17 15:44 编写人生 阅读(69) | 评论 (2)编辑
这几天对动态实体做了一些修改,然后同事们一运行就出错了,仔细调试后发现是在反序列化时,我写了一个回调,然而发生回调时,对象没有完全初始化完毕。具体是这样的:
我有个类:DependencyMetadataBase,包含一个方法:
        [OnDeserialized()]
        
private void OnDeserialized(StreamingContext context) {
            
this.OnDeserialization(null);
        }
而且,这个类的派生类包含了一个内部变量:
private DependencyPropertyData _data;
很不幸,这个反序列化时的回调需要使用_data变量,跟踪发现,当回调发生时,_data不是null,但_data内部的变量中,值类型(包括string)都已经填充,但是引用类型(Class)的都是null,导致了我的回调发生错误。
查看MSDN,得到以下文字:

对象将被彻底重新构造,并且在反序列化期间调用方法可能会产生不良的副作用,因为被调用的方法可能引用在进行此调用时尚未被反序列化的对象引用。如果反序列化的类实现 IDeserializationCallback,则在整个对象图已被反序列化后将自动调用 OnDeserialization 方法。此时,所有引用的子对象均已被完全还原。哈希表就是在不使用事件侦听器的情况下很难反序列化的类的典型示例。在反序列化期间检索键/值对十分容易,但将这些对象添加回哈希表可能会造成一些问题,因为不能保证从哈希表派生的类已被反序列化。因此,不建议在此阶段对哈希表调用方法。

所以,我使用IDeserializationCallback实现了回调功能。事实上,我以前另外一个类就使用了IDeserializationCallback这个方法,但为什么后来这个类又不用呢?当时遇到一个问题,假设A实现了IDeserializationCallback,而B也实现了,很遗憾,当A引用了B并反序列化时,并不能保证B先被调用IDeserializationCallback方法,所以当A的IDeserializationCallback调用了B的数据时,很可能B没有调用IDeserializationCallback,造成程序的错误。
所以在当时,我使用了OnDeserializedAttribute,这个回调要早于Callback方式,但很遗憾,直到现在,我才发现OnDeserializedAttribute更危险。
最终的解决方案是都实现Callback模式,但是在A调用B前,先检查B是否已经调用过Callback,如果没有,提前调用。
posted @ 2008-01-31 11:03 编写人生 阅读(110) | 评论 (0)编辑
今天逛了一下ADO.NET Entity Framework团队的Blog,我对这个项目比较感兴趣,因为我也是写ORM的。:) 当然了,那档次不是一个级别的。
这个项目我都不知道放了多少次鸽子了,我还记得ObjectSpace这个东西,到现在出到beta 3,连LinQ都发表了,他总不能再放鸽子吧。(Vista中WinFS我猜想也是这个东西他们的放鸽子,所以WinFS也不得不放鸽子了。)
好,言归正传,有那些东西呢?
首先是Beta 3发布的文章(不能算新闻了),有
- 性能的改进;
- 为商业逻辑支持提供必要的事件;
- 查询的改进,编译的LinQ支持,提供ToReaceString()方法方便调试;
- 更好的对其他数据库的支持;

关于设计器方面:
Entity Designer CTP2
Entity Data Model Designer Video - CTP 2 在ADO.NET Entity Framework中如何使用存储过程;
Customizing Code Generation in the ADO.NET Entity Designer

当然,还有很多的教程之类的
SampleEdmxCodeGenerator sources
Programming LINQ and the ADO.NET Entity Framework Webcast
How does the ADO.NET Entity Designer generate code?
How to Extract CSDL from EDMX
Annotations in CSDL

当然,我最有兴趣的是这个:
ADO.NET performance improvements with the .NET Framework 2.0 SP1
他上面说,.NET FW 2.0 Sp1将SqlReader读取性能从14855增加到18100,不是一般的性能提高啊。
posted @ 2008-01-29 10:58 编写人生 阅读(105) | 评论 (1)编辑

今天看见一篇文章【C#食谱】【面食】菜单1: 何时何地使用泛型 ,总结的很好,我也总结一下,不过是反过来的:何时何地不能使用泛型。
注:以下未特别注明的话,均表示不能对外展现泛型,内部仍然可以使用泛型。
1、控件上,在控件上public一个泛型的属性,意味着窗体设计器无法打开。同样的,在重用的组件上也意味着不能打开设计器 了;
2、WebService上,据我目前所知,目前的WebService规范是不支持泛型的,不管是对外接口,还是返回/传入的数据类型;
3、COM的互操作,COM是不支持泛型的。

解决方案:
在以上的应用中,我们又如何避免泛型带来的麻烦呢?一般你可以:
1、包装泛型类,使其特例化,不再具有泛型的特征。例如:
public sealed class DependencyPropertyCollection : ReadonlyNamedCollection<DependencyProperty>
2、 定义非泛型的接口,将泛型的返回值或参数使用object方式访问,适合COM操作。

欢迎大家补充。
补充:竟然有人说这是垃圾文章,哎,算了,不要丢人了,不要放在首页了。

posted @ 2008-01-28 10:05 编写人生 阅读(1676) | 评论 (10)编辑
 今天同事使用IronPython中的Lambda写程序(我们的程序使用IronPython的Lambda功能),发现一个问题,假设有函数:c = a / b,可是b有可能为0,如果为0,那么我们希望c=0,由于是Lambda表达式,所以必须使用一行话描述,可惜查资料发现IronPython不支持三元运算符,后来查资料,发现Snowdream兄写了解决方案: Python 学习笔记 (3)
修改后的程序是:  b!=0 and a/b or 0,注意这里使用了不等于,我们发现b=0时,不会运算a/b,也就起到我们的目的。
posted @ 2008-01-24 15:18 编写人生 阅读(60) | 评论 (0)编辑
     摘要: IronPython 1.0如何做属性注入很早就有朋友写了文章介绍了,请参考 《IronPython 中的属性注入器机制 》,这是木野狐(Neil Chen) 的 Blog兄的较详细的文章。但是,到了IronPython 2.0这个程序完全变了麽样,在IronPython 2.0中包含了如何做属性注入的测试用例,为防止大家找的辛苦,我就将此代码放在此文章中便于大家搜索。注意本文章基于 2.0A6,... 阅读全文
posted @ 2007-12-20 14:40 编写人生 阅读(76) | 评论 (0)编辑
     摘要: Good afternoon下午好 Good morning 早上好book 书 ruler 尺 pencil 铅笔 rubber 像皮 bag 书包
pencil-box 铅笔盒Give me a …,please.请给我….Here you are. 给你 eye 眼睛mouth 嘴巴
face 脸 nose 鼻子 ear 耳朵 dance 听音乐 read 看书 sing 唱歌 draw 画画 What can you do? 你在干什么? I can …….. 我在。。。。
grandmorher 奶奶grandfather 爷爷father 爸爸mother 妈妈me   阅读全文
posted @ 2007-12-18 12:47 编写人生 阅读(133) | 评论 (0)编辑