给 IConfiguration 写一个 GetAppSetting 扩展方法 Intro 在 .net core 中,微软已经默认使用 appsettings.json 来代替 app.config,并重新设计了一套完整的配置系统,可以支持 json/xml/ini/环境变量等. 在 .net core 中有一个 GetConnectionString 的扩展方法用来比较方便的获取链接字符串,类似于在 .net framework 中使用 ConfigurationManager.Connec…
前言 把一系列相关联的功能使用模块开发,好处多多,维护起来很方便,模块还可以单独发布出去,让下一个项目之间使用,真是方便. 下面我就写一个开发扩展的简单教程. Gii gii 自带帮助我们生成一个基本的扩展文件结构,地址如下: www.xxx.com/gii/extension 先预览一下,成功之后可以点击生成按钮. 然后页面会提示你如何操作.他让我们上传到 GitHub 上去,再开发.使用.但是一般我们一个扩展刚生成,还没写功能,上传到 GitHub 再开发,太麻烦了. 下面我来谈谈我是怎么使…
扩展方法是C# 3.0(老赵对VB不熟)中最简单,也是最常用的语言特性之一.这是老赵自以为的一个简单却不失经典的实例: [AttributeUsage(AttributeTargets.All, AllowMultiple = true)] public class AttachDataAttribute : Attribute { public AttachDataAttribute(object key, object value) { this.Key = key; this.Value…
最近在学习Spring,心想dotnet如何实现类似形式呢.于是想认真学习Casetle组件,发现没有书籍!而spring的书多得很.于是只好找网上教程了.发现系统的文章不多.Terrylee好多文章似乎都旧了,只好回头来看官方的文档. https://github.com/castleproject/Windsor/blob/master/docs/README.md 英文呀!好些单词需要去查,于是想到划词翻译.下载几个扩展程序提示不安全!好吧,自己写一个!开放的体系就是好! 百度搜一下好多的…
有时候,我们须要读取一些数据,而无论这数据来源于磁盘上的数据文件,还是来源于网络上的数据.于是.就有了以下的 StringExtensions.cs: using System; using System.IO; using System.Net; namespace Skyiv { public static class StringExtensions { public static Stream GetInputStream(this string fileNameOrUri, strin…
在我没有看这本书之前,我都想象不到,原来chrome扩展程序可以这样写,真的非常有意思. 就是用最简单最基础的代码,然后就实现了一些非常有意思的玩意儿. 先看效果图 实际运用要和现实联系在一起,经历和知识的体系不断的关联,才不会忘记 学习的知识如果在现实工作中没有用到,就会淡忘它.经历要达到一定的程度,项目要达到一定的阶段 这个就是一个很简单的例子,当我们输入facebook网站,就会弹出一个弹框,然后我们输入名字,这个网站就会被我们输入的名字所代替. 这个网站换成随便什么网站都是可以的.接下来…
@(编程) [toc] 本文介绍如何利用Chrome 的插件, 从我们的一个网站中启动一个我们的本地程序.本文的环境是windows10,本文的例子是通过点击网页上的一个button,调用本地的word. chrome插件的内容 一个chrome插件包括三个文件:manifest.json(名字不可改, 建插件必须文件),background.js(文件名可改, 后台文件),content.js(content script文件 负责与网站页面交互) manifest.json { "name&…
Object.create()会将参数对象作为一个新创建的空对象的原型, 并返回这个空对象, 基于这个功能, 就有了下面这个Object.create()的手动实现: function _create(obj){ function C(){} C.prototype = obj; return new C(); } var obj1 = {name: "Lilei"}; var lilei = _create(obj1); lilei; // {} lilei.name; // &qu…
using System; using System.Data.Objects; using System.Linq; namespace OutOfMemory.Codes { /// <summary> /// Adds extension methods to the <see cref="IQueryable{T}"/> class. /// </summary> public static class QueryableExtender {…
String.prototype.repeatify=String.prototype.repeatify || function(times){ var str=''; for(var i=0;i<times;i++){ console.log('this',this) // this指向调用这个函数的对象 str+=this; } return str} 'hello'.repeatify(3)======>'hellohellohello'…
学习MVC时,学会了写扩展方法,用起来很方便. 01 using System; 02 using System.Collections.Generic; 03 using System.Linq; 04 using System.Web; 05 using System.Web.Mvc; 06 using System.Text; 07   08 namespace MvcApp1.Content 09 { 10     //<%@ Import Namespace="MvcApp1.C…
一.一个功能强大的页面开发辅助类—HtmlHelper初步了解 1.1 有失必有得 在ASP.Net MVC中微软并没有提供类似服务器端控件那种开发方式,毕竟微软的MVC就是传统的请求处理响应的回归.所以抛弃之前的那种事件响应的模型,抛弃服务器端控件也理所当然. 但是,如果手写Html标签效率又比较低,可重用度比较低.这时,我们该怎样来提高效率呢?首先,经过上篇我们知道可以通过ViewData传递数据,于是我们可以写出以下的Html代码: <input name="UserName&quo…
一.一个功能强大的页面开发辅助类—HtmlHelper初步了解 1.1 有失必有得 在ASP.Net MVC中微软并没有提供类似服务器端控件那种开发方式,毕竟微软的MVC就是传统的请求处理响应的回归.所以抛弃之前的那种事件响应的模型,抛弃服务器端控件也理所当然. 但是,如果手写Html标签效率又比较低,可重用度比较低.这时,我们该怎样来提高效率呢?首先,经过上篇我们知道可以通过ViewData传递数据,于是我们可以写出以下的Html代码: 1 <input name="UserName&q…
实践 扩展方法是C# 3.0中新加入的特性.MSDN中对扩展方法的定义是:扩展方法使您能够向现有类型"添加"方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 以下以对一个字符串进行MD5加密为例. 如果不使用扩展方法~通常情况下我们写一个这样的方法 public static string MD5Encrypt(string str) { return FormsAuthentication.HashPasswordForStoringInConfigFile(str,…
1.特性(Attributes) 特性(Attributes),MSDN的定义是:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法和属性等.Attributes和Microsoft .NET Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为.例如,在一个方法前标注[Obsolete]特性,则调用该方法时VS则会提示该方法已过期的警告,如下图: 又如,在.Net Re…
先说有用的,c#扩展方法结论: 扩展方法能够向现有类型“添加”方法,而无需创建新的派生类型,重新编译或以其他方式修改原始类型.扩展方法必须是静态方法,可以像实例方法一样进行调用.且调用同名中实际定义的方法优先级要高于扩展方法. 先来个简单的例子: public static class test { public static int CountYourNumber(this string str) { return str.Split(new char[] {' ','.','?' }, St…
C#3 引入的扩展方法这一个理念. 扩展方法最明显的特征是在方法参数中第一个参数有this声明. 其实C#库中有很多已经是扩展方法了.比如linq中对序列使用的查询语句, where, select等都是经过扩展的方法. 由于有很多抽象的方法, 比如stream这种, 在很多继承类里面没有完全的达到使用者的目的, 使用者往往需要自己写一个工具类, 例如StreamUtil来维护所有的继承类, 一般这种工具类都是静态的. C#3可以使用扩展方法来改进这一需求的实现. 例如代码: using Sys…
 最近对扩展方法比较感兴趣,就看了看资料,记录一下扩展方法的几种方法. 一. 扩展方法的基本使用: Note: 1. 扩展方法必须在静态类中, 2 扩展方法必须声明静态方法,3 扩展方法里面不能调用其他自定义方法. public static int TryToInt(this string intStr) { ; int.TryParse(intStr, out number); return number; } public static IEnumerable<string> Start…
文章翻译整理自 Nikola Malovic 两篇博文: Task.WhileAll Awaitable task progress reporting 当 Task.WhenAll 遇见 Task.WhenAny 在 TPL (Task Parallel Library) 中,有两种通过非阻塞方式等待 Task 数组任务结束的方式:Task.WhenAll 和 Task.WhenAny . 它们的工作方式是: WhenAll 当每项任务都完成时为完成. WhenAny 当任意项任务完成时为完成…
Rango会讲解在Linux下从零开始写一个PHP扩展,并编译安装到PHP里,一直到执行扩展中的函数.包含的内容有: 为什么要开发PHP扩展 ext_skel工具的使用 修改config.m4 phpize的使用 必备工具,autoconf / gcc / make / php5 / php5-dev ZendAPI的使用简介,会介绍几个重要的API 摘自:http://wiki.swoole.com/wiki/page/238.html 学习笔记: 1.安装 Eclipse IDE 插件 (1…
TPL实现Task.WhileAll扩展方法 文章翻译整理自 Nikola Malovic 两篇博文: Task.WhileAll Awaitable task progress reporting 当 Task.WhenAll 遇见 Task.WhenAny 在 TPL (Task Parallel Library) 中,有两种通过非阻塞方式等待 Task 数组任务结束的方式:Task.WhenAll 和 Task.WhenAny . 它们的工作方式是: WhenAll 当每项任务都完成时为完…
1. linq查询数据 WebTestDBEntities db = new WebTestDBEntities(); 1.1 linq查询所有列数据 var userInfoList = from u in db.UserInfo select u; 1.2 linq查询部分列数据 var userInfoList = from u in db.UserInfo select new { Name = u.UserName, Pwd = u.UserPass }; foreach (var u…
近期对MVc自定义分页作了一下小研究下面把他记下来 下述代1,2,3里面的代码可以直接拷贝,4以后的根据情况自己选定 1.在后台任写如下的扩展方法(任一类库都可以,但是用时得引用命名空间) // 添加using System.Web; using System.Web.Mvc; 引用,找不到可以从MVC层拷贝 namespace System.Web.Mvc.Html // 注意一定要把类的命名空间写成System.Web.Mvc.Html { public static class PageE…
C#扩展方法,简单的理解是不修改原来类的源代码的情况下,为某个类添加某个方法.扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的.它们的第一个参数指定该方法作用于哪个类型,并且该参数以 this修饰符为前缀. 有一个典型的应用场景,就是程序二开.比如别人的DLL不公开源代码,要想在DLL某个类中添加一个新方法的话,是不太可能的.但是可以使用扩展方法,达到类似的目的. 1.新建两个类文件:Rectangle.GenericClass. /// <summary> /// 自定义类(长方…
所谓的动态排序是指支持任意字段.任意升序降序的排序.我们希望在客户端按如下格式写: localhost:8000/api/items?sort=titlelocalhost:8000/api/items?sort=name,titlelocalhost:8000/api/items?sort=-name,title 字段前面加-表示降序,否则是升序. 接下来要做的就是解析查询字符串中的字段,组成排序的表达式树作为OrderBy方法的实参. 首先安装如下: install-package syst…
Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. 阅读一些著名框架类库的源码,就好像和一个个大师对话,你会学到很多.为什么是 underscore?最主要的原因是 underscore 简短精悍(约 1.5k 行),封装了 100 多个有用的方法,耦合度低,非常适合逐个方法阅读,适合楼主这样的 JavaScript 初学者.从中,你不仅可以学到用…
我们知道Swift可以扩展已存在的类或结构,这些类或结构可以存在于标准库(或称为核心库)中.如果结构是一个集合类型(比如Array)就更有趣了.我们想尝试写一个限定Type数组的扩展,So我们就拿Array< Int>为例吧. 本猫想是不是可以这么写: extension Array<Int>{ //.... } 不过显然不可以 :[ 翻看了一下Apple官方的Swift编程语言,一无所获.于是上网溜了一圈,发现一个可行的解决方法,是滴,必须要用where子句: extension…
NSMutableArray内置的方法-(void)replaceObjectsAtIndexes:(NSIndexSet*)set withObjects:(NSArray*)objs 只能替换一段连续索引内的对象,比如2 to 10之间的对象,如果我想要替换1,3,5索引位置的对象需要自己写代码. 在ruby中对于数组对象有一个values_at方法可以取得不连续索引的对象: 2.2.1 :048 > ary = %w[a b c d e f g] => ["a", &…
扩展方法 扩展方法有以下几个需求: 你想为一个类型添加一些 成员: 你不需要为类型的实例添加任何更多的数据: 你不能改变类型本身, 因为是别人的代码. 对于C#1和C#2中的静态方法,扩展方法是一种更优雅的解决方案. 语法 并不是任何方法都能作为扩展方法使用—— 它必须具有以下特征: 它必须在一个非嵌套的. 非泛型的静态类中( 所以必须是一 个静态方法): 它至少要有 一个参数: 第一个参数必须附加 this 关键字作为前缀: 第一个参数不能有其他任何修饰 符(比如out或ref): 第一个参数…
原文:WPF 3D模型的一个扩展方法 在WPF 3D中,我们常常需要改变一个ModelVisual3D对象的颜色. 先说说ModelVisual3D,本质上3D模型都是由一个个的三角形构成的,并且经过材质进行渲染(DiffuseMaterial) . 这是一个ModelVisual3D的xaml代码:                 <ModelVisual3D x:Name=,, ,..."/>                            </GeometryMod…