11 2009 档案
摘要:ClientBase<Iservice>和ChannelFactory两种方式都可以创建proxy: (1)ChannelFactory using (ChannelFactory<IService1> channelFactory = new ChannelFactory<IService1>("WSHttpBinding_IService1&q...
阅读全文
摘要:public class client : ClientBase<IService1>, IService1 { } 基类要写在接口前面,不然编译就会报错。Compiler Error CS1722
阅读全文
摘要:话说,这道题的解法和答案都是有问题的。下面给出我的思路和答案。
阅读全文
摘要:public classA { public static intX; staticA() { X = B.Y + 1; } } public classB { ...
阅读全文
摘要:控制反转(IoC)有2种: 一种是依赖注入,MVVM就是这方面的代表。 另一种IoC容器,把所有的Service都扔到container中。
阅读全文
摘要:4.2 瓷砖问题 能不能铺是比较简单的。 用1*2 去铺 N*M,看得是N*M是奇数还是偶数。 用p*q的瓷砖覆盖M*N的地板的充要条件是: 1。第一行和第一列可以被覆盖 2。m可以被p整除并且n可以被q整除 http://computer.mymang.cn/algorithm/106-1098926.html 再有就是有几种铺法的问题了。对于用1*2去铺2*M,居然铺...
阅读全文
摘要:我也设计模式——0.前言 我也设计模式——1.Factory Method 我也设计模式——补一篇 Simple Factory 我也设计模式——2.Abstract Factory 我也设计模式——3.Singleton 我也设计模式——4.Builder 我也设计模式——5.Prototype 我也设计模式——6.注册工厂 我也设计模式——7.反射工厂 我也设计模式——8.Adapter 我也...
阅读全文
摘要:我这人就爱较真儿。今天八卦一下C#的构造函数: (一)先看一下引用类型的实例构造函数(ctor): 测试一,无参ctor: 只要是程序员,都这么写过代码。我们甚至可以省略B和A的无参ctor,但是,在CLR内部,会默认为B和A创建各自的默认无参ctor(啥事儿也不做),new B的时候,一级级从子孙向祖先往上冒,直到所有类的基类:Object的ctor。 当我们在Visual...
阅读全文
摘要: 听说,图灵出版社的刘江主编要兼任《程序员》杂志的名誉主编了。
我来泼盆冷水吧,这是个换汤不换药的事。
《程序员》,就像一个病入膏肓的垂死之人,还是别治了,打一针安乐死好了。不是我奚落你们,现在这本杂志就连
阅读全文
摘要:public void AddNewColumn(string path){ DataGridTemplateColumn column = new DataGridTemplateColumn() { Header = path, SortMemberPath=path }; StringBuilder sb = new StringBuilder(); sb.Append(@" <Dat...
阅读全文
摘要:书接上文,比较WCFBehaviorSolution1.zip和WCFBehaviorSolution2.zip这两个项目,它们分别在Service和Client定义了behavior,在实现上有几点区别:
阅读全文
摘要:代码下载: Service:WcfService7.zip Silverlight:DynamicGridViewDemo.zip 思路简单介绍如下: 1.AttachedBehavior结合Resource来为Column中的列添加事件 2.使用DP,来封装多个GridView: public class FormFieldTemplateSelector : UserControl...
阅读全文
摘要:代码下载:SL3TabControl_new.zip关键代码如下: <Controls:TabControl Regions:RegionManager.RegionName="TabRegion" Width="Auto" Height="Auto" Margin="0,5,0,0" HorizontalAlignment="Stretch"> <Regions:TabCont...
阅读全文
摘要:我是一个有代码“洁癖”的人,这一点,在WPF/Silverlight中,表现为不到万不得已绝不用DP,因为大多数情况用INotifyPropertyChanged凑活凑活就可以了,而且这样生成的代码最简洁。而为了DP需要写4段代码:DP声明、get和set方法、以及回调函数,把原先的整齐搞得一塌糊涂,这是我不喜欢的。 但是,如果牵扯到XAML中一些不能实现的属性,就必须使用DP了。尤其是Silv...
阅读全文
摘要:我想,Silverlight只是WPF的一个子集,很多WPF的功能,在SL中并没有,比如说TemplateSelector,比如说Relative绑定。于是,我们只好采用AttachedBehavior来模拟。 这样最好,最灵活,需要什么,就添加相应的DP,使得SL类库最小化。 所有派生自ContentControl的类型,都使用ContentPresenter来显示它们的内容...
阅读全文
摘要:本章深入到可执行文件的内部,进而探索元数据的概念。 a.cs using System;using System.IO;public class zzz{ public static void Main() { zzz a = new zzz(); a.abc(); } public void abc() { FileStream s = new FileStream("C:\\mda...
阅读全文
摘要:这本书很复杂,其精华在于探讨.NET世界中的可执行文件,而这些文件可以由任意一种编译器产品所生成。本书的核心语言是C#。因此,读者应该非常熟悉这门语言。 在探究元数据这一重要概念之前,我们需要理解PE(Portable Executable)文件格式。元数据是PE文件中必不可少的一部分。PE文件是和.NET底层架构打交道的。 我们不会马上讨论元数据,因为本章主要关注于PE文件格式的“内幕”。 ...
阅读全文
摘要:每个表都会被分配一个唯一的值,或者更精确的说,valid字段中的一个位。从而,由于valid字段被声明为一个长整数(long),所以最多只能有64个不同的表类型。 在上一章的结尾,我们顺便提及了存在于文件中的表的名称。在本章,我们将详细研究在最小的exe文件中这些表的内容。 Module表 第一个表,由位0所标识,是Module表。由于IL中的.module指令的存在,这一行被作为IL中的....
阅读全文
摘要:本章继续描述剩下的没有涉及过的表。为此,创建单独的程序来说明每个不同的表。最后,在本书的最后一章,把它们放入一个单独的程序中,其中每一个表都是交叉引用的。 表4-1 本章的第一个程序使用了Fields表。在b.cs文件中输入下面的代码并编译该文件。 Fields表 b.cs a.cs Output 实例变量又被称为字段。Field表保存了在valid表中的索引4。由于文件跨越了2个名为z...
阅读全文
摘要:在前面介绍的的所有章节中,通过不同的程序,我们阐明了所有的概念和表。在本章,我们竭力来描述一个单独的程序,它包括了所有的表并显示有意义的输出。在显示了指向不同表的引用的地方,例如typeDef[1]、MethodRef[2]等等。我们将显示存在于这些位置上的实际值。从而,我们尝试着解决所有的交叉引用并以一种全面的方式显示元数据信息。 但是,在开始解释这个巨大的程序之前——该程序对所有的表进行了交...
阅读全文
摘要:b.il a.cs Output 表5-1 上面的例子是解释方法签名的开始步骤。这个程序被直接作为贯穿本章的一个原型使用。新引进的函数将被追加到abc函数的结尾。FillParamsArray和DisplayMethodSignature这2个函数会被添加到程序中。 为了支持函数签名的显示,参数名称的存在是不可避免的,就像我们在输出重看到的那样。目前,FillParamsArray方法进填...
阅读全文
摘要:始终对Control Template抱有恐惧。这是WPF/Silverlight中最灵活的技术。 说到底,Control Template就是为控件定义了视觉外观,从Control派生的所有类型,都具有一个Template属性。 如果只有Template,那反而倒简单了: <Button Height="23" HorizontalAlignment="...
阅读全文
摘要:1对于自定义ParameterInspector,需要注意的是,可以修改参数的值,但是不能改变参数的类型。 自定义ParameterInspector是用于Operation的,所以它要实现IOperationBehavior接口 2对于自定义OperationBehavior,由于它是由于终结点的,所以它要实现IEndpointBehavior接口。 此外,还要注意,cli...
阅读全文
摘要:接下来说ChannelListener和ChannelFactory。 ChannelListener是Service端的技术,用来侦听消息,创建信道栈,并为应用程序提供指向栈顶的引用。 我们不会直接使用ChannelListener,但是我们经常会使用到ServiceHost,殊途同归,其实也是用它来侦听消息。 static void Main(string[] args){ BasicHt...
阅读全文
摘要:Channel分为2种:transport信道和protocol信道。 Service和Client都有一个信道栈,由多个信道组成,其中,transport信道位于信道栈的最底层,protocol信道位于信道栈的最上层。 protocol信道用于消息交互、安全、事务、日志。 transport信道用于transport和encoder。 信道栈又被称为Binding~~娃哈哈,终于找到了共性。 信...
阅读全文
摘要:基于上文的Demo,我们观察到,在IIS宿主中,配置文件有以下特征: <system.serviceModel> <services> <service name="WcfService9.Service1" behaviorConfiguration="WcfService9.Service1Behavior"> &...
阅读全文
摘要:1.WCF就是一个乌托邦,是微软养的一帮闲人闷在办公室里做出来的东西。他们的理想是崇高的,说什么整合所有通信协议,其实,自从WCF问世到现在,并没有做到这一点。开发人员只是将其作为代替Web Service的工具来使用而已,这恐怕是WCF Team始料不及的。为什么不用WCF编写UDP通信或Remoting呢?因为原有的UDP通信框架已经成熟,转换成WCF势必增加大量的工作。此外,做底层通信从来都...
阅读全文
摘要:《WCF揭秘》那本烂书的Sample版本太低,我重写了一个: 基于这个WCFCustomChannelSolution0.zip ChennelFactory:WCFCustomChannelSolution1.zip ChannelListener: System.ServiceModel.Channels命名空间下: IInputChannel ...
阅读全文