摘要:
前言:写此文章一方面是为了巩固对序列化的认识,另一方面是因为本人最近在面试,面试中被问到“为什么要序列化”。虽然一直在使用,自己也反复的提到序列化,可至于说为什么要序列化,还真的没想过,所以本文就这样产生了。序列化是将一个对象转换成一个字节流的过程。反序列化是将一个字节流转换回对象的过程。在对象和字节流之间转换是很有用的一个机制。(当然这个还不能回答它的实际用处)举点例子:应用程序的状态可以保存到一个磁盘文件或数据库中,并在应用程序下次运行时恢复。比如ASP.NET就是利用系列化和反序列化保存和恢复回话状态。一组对象可以轻松复制到系统的剪切板,然后再粘贴到其他的地方(应用程序)。一组对象可克隆 阅读全文
摘要:
前言:不管是自定义的一些特性,或者是C#中内置的特性,均继承自Attribute这个类,这个类也提供了一些方法,方便我们使用。Attribute类有三个静态方法:1.IsDefined,如果有指定的Attribute的实例与目标关联,则返回true。 2.GetCustomAttributes,返回一个数组,其中每个元素都是应用于目标的指定attribute类的一个实例。该方法通常用于已将AllowMultiple设为true的attribute,或者用于列出已应用的所有attribute。3.GetCustomAttribute返回应用于目标的指定attribute类的... 阅读全文
摘要:
本文主要讲解WPF中的基本图形知识,内容如下:1。图形的基础知识准备2。WPF中的图形体系结构3。颜色和画刷4。Shape5。Drawing和Visual1.1WPF中的坐标1.1.1 WPF的默认坐标:WPF中平面坐标系主要包括原点位置、X和Y轴方向,以及坐标单位。WPF的默认坐标系原点位置在绘制区域的左上角,X轴向右增加,Y轴向下增加。 自定义坐标系:自定义坐标系主要通过Transform类来实现,一般可以使用ScaleTransform和TranslateTransform来进行坐标的反转和水平移动,如下: <Canvas> <Canvas.RenderTransfo. 阅读全文
摘要:
其实关于验证的博文已经出现了很多,个人推荐的还是jv9的关于验证的文章.http://kb.cnblogs.com/page/74390/当然本文是有部分和jv9文章的内容类似,不过在其基础上又多出了更多的验证方式和其他常用的技巧和功能。首先分类下验证的方式:一、异常方式,即在属性的Setter中throw出异常,则只要在XAML中配置相应属性即可显示二、使用BindingValidationError事件进行验证三、使用IDataErrorInfo(同步验证)和INotifyDataErrorInfo(异步和同步验证,异步的验证IDataErrorInfo和DataAnnotations无法 阅读全文
摘要:
在silverlight中经常会添加一些其他的dll或者第三方的类库,我们知道silverlight作为客户端的插件,每次访问都需要去下载xap包中的资源或者是文件,当然这个访问的速度快慢和这个xap包的大小有直接关系,所以要尽可能的使xap包小点,ok,今天来说下,怎么实现动态加载dll以及实现缓存.一.实现加载Dll 其实加载的dll的原理很简单,没错,就是使用我们强大的WebClient进行下载,然后使用AssemblyPart进行Load就可以了,就是这么简单,为了减小Xap的大小,我们把要加载的dll的所属程序的编译路径设置为ClientBin(如果当前的dll为第三方,则直接赋值到 阅读全文
摘要:
前言: 微服务还没玩溜,服务网格的出现已让我佩服三连。本着,不作死就不会死的原则,我进行了深(ru)度(men)学习。本系列一共有4篇文章组成,分别是《服务网格之基于kubeadm安装k8s 和 DashBoard》、《服务网格之基于Kubernetes安装Istio》、《服务网格之Istio基础实 阅读全文
摘要:
前几天一朋友问我如何实现线程的顺序执行,说真的,虽然看过CLR这本书,也把线程部分拜读了两遍,但是这个问题出来之后还是没有一个思路。今天在搜索资料的时候无意中再次看到AutoResetEvent这个东西,当然我知道它是和线程有关,用于处理线程切换之类的(可能在测试Demo之前理解有误),于是决定用A... 阅读全文
摘要:
前世:项目中需要拖动div,然后和某个div进行位置交换,这不是关键,关键是还要保存位置,然后在下次打开的时候按照保存的位置显示。还好本人功力深厚,一下子就想到了用localStorage来保存,事实证明真的很好用哦。保存数据的方法有了,然后开始"探索"如何用html(5)和js来实现拖拽的效果,由... 阅读全文
摘要:
场景:工具栏上有很多图标(一个图标代表一种控件),可以左键按下图标,然后拖拽到设计区域创建一个个的控件。实现:1.给工具栏上的图标添加MouseLeftDown和MouseMove事件,前者事件是为了告诉Move事件我的确按下了左键,同时也可以在MouseDown事件中初始化一些标识;在后者 中经过自己的逻辑判断,看看是否可以拖拽了(一般就是判断自己的标识,比如是否按下了左键,这样的判断),如果可以则加入如下代码: DragDrop.DoDragDrop(sourceControl, data, DragDropEffects.Copy); 第一个参数就是进行拖拽的控件,第二个... 阅读全文
摘要:
有时候我们可能在Panel(StackPanel、Canvas、Grid)上或者是在一些默认不支持Focus的控件上添加了KeyDown或者KeyUp,可是残酷的现实告诉我们,这是无法触发的,怎么办呢,很简单,只需一句代码。 private void MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { Grid1.Focus(); }也就是在鼠标单击事件中,让容器(或者其他控件)调用Focus方法,使其尝试获得焦点。小伙伴们是不是尝试过后发现还是不行,哈哈哈,那... 阅读全文
摘要:
前言:反射在C#中虽然不常用(如果不需要动态加载xx.dll),但是有时候却是设计某个程序或者完成某类功能比较好用的技术。比如:一个支持动态扩展的程序,这样就需要动态加载dll,动态创建加载dll的程序集,最终完成操作。一、加载程序集对于程序集的加载一般会使用两个方法来进行:1.Assembly.Load(string assemblyName),AssemblyName为程序集的长格式名称。 Assembly SampleAssembly = Assembly.Load("SampleAssembly, Version=1.0.2004.0, Culture=neutral, Pu 阅读全文
摘要:
前言:对于此操作,我只想说是微软的神经,还是我的笨蛋。为什么EventTrigger就不能像Trigger那样直接设置Property以及Value就对属性进行操作,而必须要放一个Action,而默认的Action只有三个,其中两个为动画,一个为播放声音,我只想说,可以洗洗睡了。正题:在EventTriigger中修改属性的值,怎么做呢,我们都知道EventTrigger中只有Action可以使用,而Action的操作中我们也只能使用StoryBoard来操作,难道我们也要通过动画修改各种属性?没错,就是这样,殊不知动画不仅支持Double、Color、Point,它还支持Object哦,待我 阅读全文
摘要:
描述:开发中完成了一个类似于Word的悬浮工具栏功能,选中文本之后可以自动弹出一个工具栏。可以修改字体、字体大小等功能,问题来了,我发现当去进行操作的时候原本选中的RichTextBox的内容的颜色会变为白色,其实仍然是选中状态,可是颜色消失了。查找了大量资料都认为是LostFocus搞的鬼,经过多次试验得出一个结论,那就是重写下LostFocus的事件。开工:上文中提到认为是LostFocus搞的鬼,RichTextBox有两个LostFocus,OnLostFocus和OnLostKeyboardFocus,两者的区别是前者为鼠标的焦点,后者为键盘的焦点。但是在测试中发现只会进入后者,而不 阅读全文