• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
flashpast
博客园    首页    新随笔    联系   管理    订阅  订阅
2009年10月25日
自定义序列化
摘要: 在编写代码的过程中,我们有可能并不希望将对象的所有属性都序列化,这时就需要自定义序列化,在.NET中自定义序列化需要继承ISerializable接口:[代码]这个接口只有一个方法,通过这个方法我们可以将需要序列化的数据序列化。info:存储将对象序列化或反序列化所需的全部数据。context:描述给定的序列化流的源和目标,并提供一个由调用方定义的附加上下文。对象序列化后,当再次需要使用对象时,我... 阅读全文
posted @ 2009-10-25 20:11 flashpast 阅读(600) 评论(0) 推荐(1)
2009年10月24日
浅谈Nullable<T>.GetType()
摘要: 先看看下边的代码:[代码]对于初学者来说,往往会认为这段程序运行的结果是如下:[代码]但运行的结果却是如下:[代码]我们先用反汇编程序查看下:[代码]从中我们会发现,当我们调用GetType()方法的时候,a对象先进行了装箱(box),在托管堆的对象是Int32类型。在.NET中,值类型对象在调用GetType()方法的时候,都需要先进行装箱操作。 阅读全文
posted @ 2009-10-24 22:04 flashpast 阅读(510) 评论(0) 推荐(0)
2009年10月23日
泛型类序列化
摘要: 泛型类可以标记为可序列化,但只有当泛型类型参数可序列化时,泛型类才可序列化。如下:[代码]         为了使泛型类可以序列化,有以下几种方法:将泛型类型参数定义的成员变量标识为NonSerialized,这样泛型类型参数的类型就不会影响到泛型类的序列化。[代码]将泛型类型参数进行约束,使其必须继承ISerializable。[代码]为泛型类添... 阅读全文
posted @ 2009-10-23 15:26 flashpast 阅读(3002) 评论(2) 推荐(2)
2009年10月22日
对象序列化
摘要: .NET为对象序列化提供了俩个格式器,分别为:BinaryFormatter和SoapFormatter。二进制序列化速度更快,序列化后数据较小。Soap序列化比前者唯一的优点就是平台无关性。下面就讲解下如何创建一个比较通用的序列化程序: 对单个对象序列化,先定义一个接口,有两个泛型方法方法Serialize和Deserialize,分别完成序列化和反序列化,创建泛型方法是为了类型安全。... 阅读全文
posted @ 2009-10-22 20:28 flashpast 阅读(587) 评论(1) 推荐(3)
2009年10月21日
EventsHelper委托触发类
摘要: 在我们使用事件的时候常常会这样写:[代码]判断事件是否有订阅,触发事件等,是经常重复写的部分,其实我们可以把他们封装起来。创建一个EventsHelper静态类,首先完成同步操作:创建以下方法:[代码]由于UnsafeFire()方法并没有检查参数类型,所以并不能保证类型安全,于是我们创建一些通用的委托,使用这些泛型委托我们可以创建一些通用的事件。因为十分长的参数并不常用,所以我只创建到参数最长7... 阅读全文
posted @ 2009-10-21 22:37 flashpast 阅读(638) 评论(2) 推荐(1)
2009年10月20日
常用的函数委托类型
摘要: 行为函数委托(Action(T))封装一个方法,该方法只采用一个参数并且不返回值。结构:void 方法名(T obj){//处理};例:[代码]判定函数委托(Predicate(T))表示定义一组条件并确定指定对象是否符合这些条件的方法。结构:bool Match<T>(T obj){//处理}[代码]转换函数委托(Converter(TInput,TOutput))表示将对象从一种类... 阅读全文
posted @ 2009-10-20 13:45 flashpast 阅读(473) 评论(0) 推荐(1)
2009年9月6日
热键注册
摘要: 要做热键首先,要做的就是定义一些枚举来表示一些常量。[代码]然后,要做的就是建立一个HotKey类,这个用来保存热键的键值,热键被激活是所触发的事件,并负责注册热键,撤销热键的操作。[代码]热键我们往往并不是注册一个这时我们就需要个集合来保存这些热键。[代码]最后,热键虽然注册了,但我们没有捕获这些热键被激发的消息,这时有两种选择,一种是使用消息筛选器,这种会降低winform的处理消息的效率;另... 阅读全文
posted @ 2009-09-06 22:29 flashpast 阅读(632) 评论(0) 推荐(1)
2009年9月5日
枚举解释器
摘要: 在我们写程序的时候,有时会使用一些枚举来表示现在的状态或者功能,这时我们可能要在界面上显示状态或功能,但是我们并不希望直接用枚举本身的符号名称,而是想使用其它的解释来表示,这时我们就可以使用特性来描述着解释了。例如:[代码]那么我们应该怎么做呢?首先,我们要定义一个特性,来告诉程序每个枚举成员的解释是什么。代码为:[代码]然后,就是我们如何获取枚举成员的解释了,这就是我们这次要做的枚举解释器了。代... 阅读全文
posted @ 2009-09-05 15:33 flashpast 阅读(330) 评论(0) 推荐(1)
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3