随笔分类 -  .Net

摘要:warning CS0467: Ambiguity between method 'Microsoft.Office.Interop.Word._Document.Close(ref object, ref object, ref object)' and non-method 'Microsoft.Office.Interop.Word.DocumentEvents2_Event.Close'. Using method group.类似诸如:warning CS0467: Ambiguity between method 'Microsoft.Off 阅读全文
posted @ 2014-03-15 21:21 老鱼_678 阅读(1582) 评论(0) 推荐(1) 编辑
摘要:Nonocast.Http is a free, open source developer focused web service via http for small and medium software.The library implement HTTP1.1 protocal and also support WebSockets.在项目中需要Post content body。body包含一些序列化数据。Server: public class Program : SmallHTTPServiceBase { static void Main(strin... 阅读全文
posted @ 2014-03-12 22:30 老鱼_678 阅读(767) 评论(0) 推荐(0) 编辑
摘要:接上篇Windows store app[Part 3]:认识WinRT的异步机制WinRT异步机制回顾:IAsyncInfo接口:WinRT下异步功能的核心,该接口提供所有异步操作的基本功能,如标识、状态、操作。IAsyncInfo:1 public interface IAsyncInfo2 {3 AsyncStatus Status { get; }4 HResult ErrorCode { get; }5 uint Id { get; }6 7 void Cancel();8 void Close();9 }IAsyncInfo没有定义当操作完成... 阅读全文
posted @ 2013-08-01 14:32 老鱼_678 阅读(1016) 评论(2) 推荐(0) 编辑
摘要:WinRT异步机制的诞生背景当编写一个触控应用程序时,执行一个耗时函数,并通知UI更新,我们希望所有的交互过程都可以做出快速的反应。流畅的操作感变的十分重要。在连接外部程序接口获取数据,操作本地数据等任务时,如果构建方式错误,应用程序会将大量的时间花费等待外部环境上,从而无法保证足够的时间来响应用户的需求。之前公司的项目需要在Win7系统下编写触控应用程序,不管同事们如何努力的优化着代码,都不能使操作体验达到需求的要求。究其原因,Win7与.NET Framework不是为触控而设计,在进行某些I/O操作时,系统内部降低的UI操作的优先级。很高兴的是,微软适时的推出了WinRT,配合Win8, 阅读全文
posted @ 2013-07-26 21:02 老鱼_678 阅读(956) 评论(0) 推荐(1) 编辑
摘要:在Win 8 App的安全沙箱内,除了使用文件选取器FileOpenPicker外,没有其他办法调用某个盘符的数据。全新的Storage命名空间,借鉴了IOS与Android的设计。下面引用一个图片绑定的简单例子:原来WPF我们可以这样写:1 2 3 也可以在Code-Behind这样写:this.DataContext = new BitmapImage(new Uri("ms-appx:///Assets/shanghai.jpg"));XAML: 效果都是这样:下面我们用Win8 App的Storage来重写一下上面的代码。为了举例,我们需要引用本地图片库... 阅读全文
posted @ 2013-07-24 12:24 老鱼_678 阅读(936) 评论(1) 推荐(1) 编辑
摘要:Windows 8系统下开发App程序,对于.NET程序员来说,需要重新熟悉下类库。关于WinRT,引用一张网上传的很多的结构图: 图1针对App的开发,App工作在系统划定的安全沙箱内,所以通过Win32去调用U盘获取数据是不行了。下面来看下在WinRT下如何读取U盘数据。1.Win 8 store app项目打开Package.appxmanifest配置文件2.选择Capabilities标签页,勾选Removalbe Storage,也可以在配置文件中的 节点增加3.选择Declarations标签页,增加File Type Associatio... 阅读全文
posted @ 2013-07-23 14:49 老鱼_678 阅读(1096) 评论(2) 推荐(0) 编辑
摘要:Strategy(Policy) Pattern译名为策略模式,是Gof经典《设计模式》一书中23种模式之一。本文将引用实际项目场景使用策略模式对实际项目进行改造,来阐述策略模式的用途。下文使用Strategy代替Strategy(Policy) Pattern表述。Strategy的核心:Strategy允许算法或对象独立于使用它的客户而变化。Strategy的使用方法:把过程中的易变部分提取到一个单独的“策略”对象中,将规则与它所控制的行为区分开。Strategy实现规则或可替换的过程。Strategy的多种实现表示完成过程的不同方式。Strategy标准UML:Edit By: http 阅读全文
posted @ 2013-06-12 23:38 老鱼_678 阅读(1201) 评论(2) 推荐(2) 编辑
摘要:目前Team在写WPF项目的时候,往往设计一个Business Manager类,它是一个Singleton,用来处理一些特定的业务,其实可以理解为Mvc中的Control,也可以理解为一个Service。当业务逻辑的需求需要应用程序的View上交互动作操作,View调用Service来完成特定的任务,如点击PhotoApp,PhotoApp调用Sevice的加载图片方法加载View所需的图片集合。通常最简单的办法是在App Load或者初始化时new创建一个Service对象,或者再高级一点,使用Factory Pattern来Decoupling(解耦)View与Serivce的具体实.. 阅读全文
posted @ 2013-05-26 00:25 老鱼_678 阅读(2737) 评论(0) 推荐(1) 编辑
摘要:接[从Prism中学习设计模式之Event Aggregator模式]一文,上文中从源码的角度分析了Prism中EventAggregator的实现。Lz想通过本文再深入谈下EventAggregator,将自己对Prism项目组的设计意图的理解做下记录,并希望和其他对Prism有兴趣的兄弟一起探讨。对于Prism的设计团队来说,设计EventAggregator肯定是经过一番详细考虑的,不会像我们平时在项目中图怎么简单怎么偷懒怎么来~[耻远了]。通过对Prism的源码进行阅读,给Lz一个很强的感觉就是Prism大量运用了设计模式和领域设计的理念,随着对源码理解的深入,这种感觉越来越强,每个设 阅读全文
posted @ 2013-05-23 22:24 老鱼_678 阅读(4810) 评论(5) 推荐(2) 编辑
摘要:在实际工作中,WPF提供的控件并不能完全满足不同的设计需求。这时,需要我们设计自定义控件。这里LZ总结一些自己的思路,特性如下:CouplingUITemplateBehaviourFunction Package下面举例说说在项目中我们经常用到调音台音量条,写一个自定义控件模拟调音台音量条。自定义控件SingnalLight,实现功能接收来自外部的范围0~100的数值实时显示接收数值数值范围0~50显示绿色,50~85显示黄色,85~100显示红色,没有数值显示褐色可在父控件上拖拽该控件首先New WPF Application Project,在Ui上放2个Button,代码:1 ... 阅读全文
posted @ 2013-05-22 14:12 老鱼_678 阅读(28562) 评论(9) 推荐(5) 编辑
摘要:标题是一个测试题。在看到这道题的时候,第一反应这是一道考程序复杂度的题,其次再是算法问题。我们先来看看质数的规则:Link:http://en.wikipedia.org/wiki/Prime_numberC#求质数代码:1 public bool primeNumber(int n){2 int sqr = Convert.ToInt32(Math.Sqrt(n));3 for (int i = sqr; i > 2; i--){4 if (n % i == 0){5 ... 阅读全文
posted @ 2013-05-15 11:12 老鱼_678 阅读(1790) 评论(5) 推荐(0) 编辑
摘要:今天收到一个Bug修复的任务,Bug为在页面上输入一个文件夹名包含空格,点击该文件夹的URL后链接错误。看URL是HttpUtility.UrlEncode将空格转换成了“+”号,原因找到就着手解决Bug。参考:http://www.cnblogs.com/xiang/archive/2006/07/18/453918.html引用: fileName=HttpUtility.UrlEncode(fileName,Encoding.UTF8); fileName=fileName.Replace("+","%20"); 通过Replace替换解决,虽然问 阅读全文
posted @ 2013-05-13 20:42 老鱼_678 阅读(880) 评论(0) 推荐(0) 编辑
摘要:大家知道WPF有多种Panel,如Canvas,Grid,StackPanel,DockPanel,WrapPanel,VirtualizingPanel等。在一些场景下可以选择任何一种或多种Panel实现一种效果。本文谈一下在同一场景下使用哪种Panel性能会更好。 新建一个WPF项目,各放置Stackpanel,Canvas,Grid,看下所占的内存,如图1,2,3 图1 Grid 图2 Canvas 图3 StackPanel我们可以看到空内容情况下内存容量是Stac... 阅读全文
posted @ 2013-05-13 13:33 老鱼_678 阅读(2891) 评论(6) 推荐(4) 编辑
摘要:在实际项目应用中,经常会需要本机中不同的进程相互直接需要通信。 典型应用场景: 剪切板在不同应用程序间操作。 控制程序给予第三方程序通信控制接口,如播放器控制开关等。 在Windows操作系统中,进程间相互通信的方式至少可以列5种以上,本文讲述在WPF环境下比较简便的解决方案: 1.WCF NetNamedPipeBinding 2.Win32 1.WCF NetNamedPipeBinding NetNamedPipeBinding适用于本机间进程通信,基于命名管道来进行消息传递。 Link:http://msdn.microsoft.com/zh-cn/lib... 阅读全文
posted @ 2013-05-09 17:10 老鱼_678 阅读(6270) 评论(3) 推荐(8) 编辑
摘要:在学习Prism中涉及的MVVM之前,我想有必要分别把MVC&MVP,MVVM,Command三种模式进行简单的总结,这样可以更好的理解Prism尤其是WPF的设计理念。本文内容:MVVM的来龙去脉为什么Prism使用MVVM示例讲解一、MVVM的来龙去脉 在我们开发具有UI界面的应用程序时,MVC和MVP模式会被大量的采用,应用这些模式可以很容易的开发各类应用程序。随着WPF的普及,一种基于MVC&MVP模式的变种,MVVM模式被微软的p&p小组提出。通过页面,数据源,逻辑分离,MVVM使开发工作更容易分工,程序结构更清晰和易维护。 MVVM全称Model/View/ 阅读全文
posted @ 2013-04-22 12:21 老鱼_678 阅读(2308) 评论(4) 推荐(2) 编辑
摘要:Event Aggregator模式定义:渠道事件从多个对象通过一个单一的对象来简化clients的注册。结构图:Prism的Event Aggregator模式:Event Aggregator允许多对象定位和发布、订阅事件。我们从Prism源代码中的EventAggregator和CompositePresentationEvent可以学习它是如何管理和传递事件消息的。 1 public interface IEventAggregator 2 { 3 TEventType GetEvent<TEventType>() where TEventType... 阅读全文
posted @ 2013-04-21 14:42 老鱼_678 阅读(2444) 评论(0) 推荐(2) 编辑
摘要:Prism的Loging是一个相对独立的功能模块,基于最基本的Log功能,可以有Trace、Console等方式进行日志的输出。当然除了以上所提的Log功能,还可以本地化存储、网络存储日志等复杂的功能。将这些复杂功能封装,暴露一部分功能或者简单的方式供外部使用,Prism使用Facade模式来实现日志功能。关于Facade模式的讲解,Link:http://www.cnblogs.com/cjfwu/archive/2013/03/23/2977541.html上文详细描述了Facade模式的定义、实现、架构图。Prism中默认实现了Trace,Console 1 public cla... 阅读全文
posted @ 2013-04-20 22:23 老鱼_678 阅读(726) 评论(0) 推荐(0) 编辑
摘要:Prism是一款轻量级的WPF框架,用于建立复合的WPF应用程序,尽可能的将Ui和逻辑分开。在对这款框架的理解过程也是一个对设计模式的理解过程。Prism Link:http://compositewpf.codeplex.com/ 图1如图1,是Prism的架构图,从中我们可以看到使用了多种设计模式,本文对Shell和Region中使用的Adapter模式进行扩展。Adapter模式的讲解:Link:http://www.cnblogs.com/cjfwu/archive/2013/03/23/2977878.html上文详细描述了Adapter模式的定义、... 阅读全文
posted @ 2013-04-20 21:32 老鱼_678 阅读(1509) 评论(0) 推荐(1) 编辑
摘要:接上节,上节总结http的一些原理,内容比较死板。这节我来总结一些常用的请求方法,配合代码可能会比较实用一些。 1.什么是http的请求方法 link: http://wenku.baidu.com/view/a8293a6c7e21af45b307a877.html http://baike.baidu.com/view/1628025.htm?fromId=9472#4 book: 《HTTP.The.Definitive.Guide》David.Gourley 我就不展开了,大家自行学习 2.请求方法汇总GETPOSTPUTDELETEHEADOPTION... 阅读全文
posted @ 2013-04-07 23:24 老鱼_678 阅读(1878) 评论(2) 推荐(0) 编辑
摘要:既然要学C++,首先需要选学习的环境。在某高人的指点下开始了Linux/g++/c++的路程~ 撇开Linux,先从g++说起。在编辑器中写完伪代码,让他从一个文件变成在屏显上的输出需要一个编译的过程,这个过程就交给G++这个编译器去做了。这个过程分为4个阶段:1、预处理;2、编译;3、汇编;4、链接; 先来一段HelloWorld,如图1: 图1 g++ 编译: -c *.cpp 将文件编译为*.o obj文件 -o *.o 将obj文件 编译为输出文件 见图2: ... 阅读全文
posted @ 2013-03-29 17:34 老鱼_678 阅读(281) 评论(2) 推荐(0) 编辑