摘要: 一个.netcore下的,十分简单的rabbitmq封装,基于RabbitMQ.Client Nuget https://www.nuget.org/packages/RabbitMQ.Bus/ https://www.nuget.org/packages/RabbitMQ.Bus.Autofac/ 阅读全文
posted @ 2018-07-25 14:43 ojdev 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 在Xamarin.Forms中,Xaml的模板功能并没有原生WPF丰富,比如Label中虽然有FormattedText可以添加Span来丰富Label的功能,但是下面的Span中的Text并没有绑定属性,无法直接绑定Model的值。 但是FormattedText本身是可以进行绑定的。 那么折中一 阅读全文
posted @ 2017-12-25 14:37 ojdev 阅读(430) 评论(0) 推荐(0) 编辑
摘要: 项目是老项目的维护,已经三年的东西了,虽然这期间维护的时候尝试过修改查询方式以提高效率,但是领导说怕出问题,所以一直搁置了,这次,领导打算全部进行优化,做一次大的调整,我就顺便记录一下之前尝试的优化方式与这一次优化的总结。2009年刚出现LINQ TOSQL的时候,我们这个采购的项目就采用了这个东西,当时感觉,这个东西太好用了,而且也因为之前一直做JAVA,算是.Net的初学者,所以感觉微软的东西很容易上手,好方便啊。所以边学边就写了那个项目,做完后一直用着,有过几次修改,但没大大变动,直到后来服务器升级,我又看了一次,发现查询的时候是在是慢的可以,一个结果只有1000+的数据,查询到显示竟然 阅读全文
posted @ 2011-12-15 14:25 ojdev 阅读(3144) 评论(27) 推荐(4) 编辑
摘要: MSDN中说ObservableCollection是一个动态的数据集合,在添加项、移除项或刷新整个列表的时候,此集合将提供通知。我是在WPF中用了这个,但是我在网上找资料的时候发现,有在WinForm中也用到的,我并没有去验证,使用方式应该一样吧,只是WPF中是提供与前台UI界面中的控件进行绑定操作时通知更新的,WinForm中怎么做就不知道了。这个,上面MSDN那么说了,但是按照我的理解就是,ObservableCollection数据集中的条目有变动,就出发通知流程,引发更新操作。这是一个泛型类,ObservableCollection<T>的形式,我之前有一个例子,是使用L 阅读全文
posted @ 2011-12-13 13:40 ojdev 阅读(3238) 评论(16) 推荐(3) 编辑
摘要: 这是今年7、8月份的时候,那个项目中用到的,需要显示柱状图和饼图,我用到的是柱状图,因为是先做Demo所以,所以打算所有东西都是用WPF做而不使用第三方,一个是因为可能涉及到版权问题,也是为了维护和定制方便,是用WPF做这类的应用,界面和可定制性还是不错的,如果有一个好的美工的话就更好了,后来赶时间,就想到了用ListBox自己做一个,做完之后感觉还不错,虽然不是很美观,但是基本功能倒是实现了。前台放置一个ListBox控件,用来显示柱状图,是用ListBox的自定义模板功能为柱状图设计样式:<ScrollViewer HorizontalScrollBarVisibility=&quo 阅读全文
posted @ 2011-12-12 09:23 ojdev 阅读(2100) 评论(0) 推荐(2) 编辑
摘要: 先说同步与异步的区别,总说同步异步的,其实一直不清楚什么是同步异步,今天找了一下:同步:当一个消息发送后,等对方回应后继续发送下一条指令。异步:当一个消息发送后,不等对方回应就发送下一条。异步:刚才被更正了,异步是,接收方不进行处理立即返回。同步,举个例子,就是你给人打电话的时候,你说一句,对方回你一句,然后你在说下一句,交流嘛。异步呢,你给一个人打电话,你一直在说。而BeginInvoke与Invoke就是同步与异步。BeginInvoke是异步操作,Invoke是同步操作。而这两个方法中执行的是一个委托。举一个代码中的例子,在WPF中有一个TextBlock控件,Name属性为txtCon 阅读全文
posted @ 2011-12-06 09:58 ojdev 阅读(3366) 评论(11) 推荐(5) 编辑
摘要: 今天突然想到一个判断session是否合法的做法,asp.net的,之前我们的做法是下面这样的形式的:1 if (Session["UserID"] == "" || Session["UserID"] == null)2 {3 Response.Redirect("../Login.aspx?m=登录已超时,请重新登陆!");4 }一直我都觉得这个方法很不好,非常不好,但是一直也没找到好的方法,刚才突然就想到和匿名方法,结合??运算符,如果session为空,那么就不合法的了, 可以用来判断用户是否登录。由于Se 阅读全文
posted @ 2011-12-02 13:53 ojdev 阅读(3773) 评论(22) 推荐(4) 编辑
摘要: yield这个关键字是和迭代器挂钩的,而且是与return一起以yield return的形式合用的,用来返回迭代器中的条目。yield不能单独放在try-catch块中,如果try中有yield那么,这个try块后面不许跟着finally块;也不能出现在匿名方法中,所以,看起来yield似乎并不常用,但是也不是不用。我前面有一个关于迭代器的例子《C#中的迭代器基础》中就用到了。可以参考一下那个例子,但是这里要再说的一点是我后来看到的,yield是跟return一起使用的,形式为yield return xxx,一般来说单独的return在每个方法中只能存在一个。而yield则不同的是,可以出 阅读全文
posted @ 2011-12-01 16:09 ojdev 阅读(498) 评论(0) 推荐(1) 编辑
摘要: 迭代器是可以返回相同类型的值的有序序列的一段代码。迭代器可用作方法、运算符或 get 访问器的代码体。迭代器代码使用yieldreturn 语句依次返回每个元素。yieldbreak 将终止迭代。可以在类中实现多个迭代器。 每个迭代器都必须像任何类成员一样有唯一的名称,并且可以在 foreach 语句中被客户端代码调用,如下所示:foreach(int x in SampleClass.Iterator2){}。迭代器的返回类型必须为 IEnumerable、IEnumerator、IEnumerable(Of T) 或IEnumerator(Of T)。迭代器是 LINQ 查询中延迟执行行为 阅读全文
posted @ 2011-12-01 15:13 ojdev 阅读(1699) 评论(13) 推荐(5) 编辑
摘要: 在MSDN上面对new()解释说到是where字句的构造函数约束,带有new()约束的任何类型都必须有可访问的无参构造函数,正常来说C#创建的类默认都有一个无参的构造函数,即使你没有写,但是如果你写了一个有参数的构造函数后,那么就没有默认无参的那个了,就需要自己手动写一个。还是拿前两天的国籍那个举个例子: 1 /// <summary> 2 /// 国籍的接口 3 /// </summary> 4 public interface INationality 5 { 6 string Nationality 7 { 8 set; 9 }10 str... 阅读全文
posted @ 2011-11-30 14:28 ojdev 阅读(2928) 评论(5) 推荐(1) 编辑