Enterprise Solution 生成实体数据访问接口与实现类型 Code Smith 6.5 模板文件下载
数据库表定义为SalesOrder,用LLBL Gen Pro生成的实体定义是SalesOrderEntity,再用Code Smith生成的数据读写接口是ISalesOrderManager,最后是生成接口实现类型SalesOrderManager。
命名规范如下:
SalesOrder => SalesOrderEntity => ISalesOrderManager => SalesOrderManager
这个过程高度机械化,接口与实现类型生成完成,被框架调用即可完成数据读写。接口与实现类是万能的接口,可满足任意条件的查询与修改需求。
Interface.cst 接口文件:
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Src="" Inherits="" Debug="True" Description="Template description here." %>
<%--<%@ Property Name="ProjectName" Type="System.String" Default="" Optional="False" Category="Project" Description="" %>
--%>
<%@ Property Name="AssemblyFile" Type="System.String" Default="" Optional="False" Category="Project" Description=""
Editor="System.Windows.Forms.Design.FileNameEditor"%>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Project" Description="" %> <%@ Assembly Name="System.Data" %>
<%@ Import Namespace="System.Data" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %> <%@ Assembly Name="SD.LLBLGen.Pro.ORMSupportClasses.NET20" %>
<%@ Import Namespace="SD.LLBLGen.Pro.ORMSupportClasses" %>
<%@ Import Namespace="Foundation" %>
<%@ Assembly Name="Foundation.Common" %> using System.Collections.Generic;
using System.Data;
using System.Text;
using SD.LLBLGen.Pro.ORMSupportClasses; using <%=GetBusinessLogicProjectName%>;
using <%=GetBusinessLogicProjectName%>.FactoryClasses;
using <%=GetBusinessLogicProjectName%>.EntityClasses;
using <%=GetBusinessLogicProjectName%>.HelperClasses;
using <%=GetBusinessLogicProjectName%>.InterfaceClasses;
using <%=GetBusinessLogicProjectName%>.DatabaseSpecific; <%-- using <%=ProjectName%>.Managers;
--%>
<script runat="template"> public string GetEntityName
{
get
{
string entityName;
entityName=EntityClassHelper.GetEntityName(SourceTable.Name,AssemblyFile);
entityName=EntityClassHelper.TrimEntityName(entityName);
return entityName;
}
} public string GetFullEntityName
{
get
{
string entityName;
entityName=EntityClassHelper.GetEntityName(SourceTable.Name,AssemblyFile);
return entityName;
}
} public string JudgeCommon(int i, int length)
{
if(i==length) return "";
else return ",";
} public string TrimEntityLowercaseName
{
get
{
string entityName;
entityName=EntityClassHelper.GetEntityName(SourceTable.Name,AssemblyFile);
entityName=EntityClassHelper.TrimEntityName(entityName);
entityName=EntityClassHelper.TrimEntityLowercaseName(entityName);
return entityName;
}
} public string GetBusinessLogicProjectName
{
get
{
string prjojectName=EntityClassHelper.PrefixProjectName(AssemblyFile);
return prjojectName;
}
} </script>
<%-- DataType get AnsiString
SystemType get System.String
--%>
namespace <%=GetBusinessLogicProjectName%>.InterfaceClasses
{
public interface I<%=GetEntityName%>Manager
{
<%=GetFullEntityName%> Get<%=GetEntityName%>(<% for (int i = 0; i < SourceTable.PrimaryKey.MemberColumns.Count; i++) { %><%=SourceTable.PrimaryKey.MemberColumns[i].SystemType %> <%= EntityClassHelper.TrimFieldName(SourceTable.PrimaryKey.MemberColumns[i].Name)%><%=JudgeCommon(i,SourceTable.PrimaryKey.MemberColumns.Count-1)%><% } %>);
<%=GetFullEntityName%> Get<%=GetEntityName%>(<% for (int i = 0; i < SourceTable.PrimaryKey.MemberColumns.Count; i++) { %><%=SourceTable.PrimaryKey.MemberColumns[i].SystemType %> <%= EntityClassHelper.TrimFieldName(SourceTable.PrimaryKey.MemberColumns[i].Name)%><%=JudgeCommon(i,SourceTable.PrimaryKey.MemberColumns.Count-1)%><% } %>,IPrefetchPath2 prefetchPath);
<%=GetFullEntityName%> Get<%=GetEntityName%>(<% for (int i = 0; i < SourceTable.PrimaryKey.MemberColumns.Count; i++) { %><%=SourceTable.PrimaryKey.MemberColumns[i].SystemType %> <%= EntityClassHelper.TrimFieldName(SourceTable.PrimaryKey.MemberColumns[i].Name)%><%=JudgeCommon(i,SourceTable.PrimaryKey.MemberColumns.Count-1)%><% } %>,IPrefetchPath2 prefetchPath,ExcludeIncludeFieldsList fieldList); EntityCollection Get<%=GetEntityName%>Collection(IRelationPredicateBucket filterBucket);
EntityCollection Get<%=GetEntityName%>Collection(IRelationPredicateBucket filterBucket,ISortExpression sortExpression);
EntityCollection Get<%=GetEntityName%>Collection(IRelationPredicateBucket filterBucket,ISortExpression sortExpression, IPrefetchPath2 prefetchPath);
EntityCollection Get<%=GetEntityName%>Collection(IRelationPredicateBucket filterBucket, ISortExpression sortExpression, IPrefetchPath2 prefetchPath, ExcludeIncludeFieldsList fieldList); <%=GetFullEntityName%> Save<%=GetEntityName%>(<%=GetFullEntityName%> <%=TrimEntityLowercaseName%>);
<%=GetFullEntityName%> Save<%=GetEntityName%>(<%=GetFullEntityName%> <%=TrimEntityLowercaseName%> ,EntityCollection entitiesToDelete);
<%=GetFullEntityName%> Save<%=GetEntityName%>(<%=GetFullEntityName%> <%=TrimEntityLowercaseName%>, EntityCollection entitiesToDelete, string seriesCode); void Delete<%=GetEntityName%>(<%=GetFullEntityName%> <%=TrimEntityLowercaseName%>); bool Is<%=GetEntityName%>Exist(<% for (int i = 0; i < SourceTable.PrimaryKey.MemberColumns.Count; i++) { %><%=SourceTable.PrimaryKey.MemberColumns[i].SystemType %> <%= EntityClassHelper.TrimFieldName(SourceTable.PrimaryKey.MemberColumns[i].Name)%><%=JudgeCommon(i,SourceTable.PrimaryKey.MemberColumns.Count-1)%><% } %>);
bool Is<%=GetEntityName%>Exist(IRelationPredicateBucket filterBucket);
int Get<%=GetEntityName%>Count(IRelationPredicateBucket filterBucket); <%=GetFullEntityName%> Clone<%=GetEntityName%>(<% for (int i = 0; i < SourceTable.PrimaryKey.MemberColumns.Count; i++) { %><%=SourceTable.PrimaryKey.MemberColumns[i].SystemType %> <%= EntityClassHelper.TrimFieldName(SourceTable.PrimaryKey.MemberColumns[i].Name)%><%=JudgeCommon(i,SourceTable.PrimaryKey.MemberColumns.Count-1)%><% } %>);
void Post<%=GetEntityName%>(<% for (int i = 0; i < SourceTable.PrimaryKey.MemberColumns.Count; i++) { %><%=SourceTable.PrimaryKey.MemberColumns[i].SystemType %> <%= EntityClassHelper.TrimFieldName(SourceTable.PrimaryKey.MemberColumns[i].Name)%><%=JudgeCommon(i,SourceTable.PrimaryKey.MemberColumns.Count-1)%><% } %>);
void Post<%=GetEntityName%>(<%=GetFullEntityName%> <%=TrimEntityLowercaseName%>);
}
}
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
Manager.cst 接口实现文件:
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Src="" Inherits="" Debug="True" Description="Template description here." %>
<%--<%@ Property Name="ProjectName" Type="System.String" Default="" Optional="False" Category="Project" Description="????" %>
--%>
<%@ Property Name="AssemblyFile" Type="System.String" Default="" Optional="False" Category="Project" Description="" Editor="System.Windows.Forms.Design.FileNameEditor" %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Project" Description="" %> <%@ Assembly Name="System.Data" %>
<%@ Import Namespace="System.Data" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %> <%@ Assembly Name="SD.LLBLGen.Pro.ORMSupportClasses.NET20" %>
<%@ Import Namespace="SD.LLBLGen.Pro.ORMSupportClasses" %>
<%@ Import Namespace="Foundation" %>
<%@ Assembly Name="Foundation.Common" %>
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using SD.LLBLGen.Pro.ORMSupportClasses;
using <%=GetBusinessLogicProjectName%>;
using <%=GetBusinessLogicProjectName%>.FactoryClasses;
using <%=GetBusinessLogicProjectName%>.EntityClasses;
using <%=GetBusinessLogicProjectName%>.HelperClasses;
using <%=GetBusinessLogicProjectName%>.InterfaceClasses;
using <%=GetBusinessLogicProjectName%>.DatabaseSpecific;
using <%=GetBusinessLogicProjectName%>.Managers;
using Foundation.Common;
<%--using EntityCollection = <%=GetBusinessLogicProjectName%>.HelperClasses.EntityCollection;
--%>
<script runat="template"> public string GetEntityName
{
get
{
string entityName;
//Debugger.Break();
entityName=EntityClassHelper.GetEntityName(SourceTable.Name,AssemblyFile);
entityName=EntityClassHelper.TrimEntityName(entityName);
return entityName;
}
} public string GetFullEntityName
{
get
{
string entityName;
//Debugger.Break();
entityName=EntityClassHelper.GetEntityName(SourceTable.Name,AssemblyFile);
return entityName;
}
} public string JudgeCommon(int i, int length)
{
if(i==length) return "";
else return ",";
} public string GetBusinessLogicProjectName
{
get
{
string prjojectName=EntityClassHelper.PrefixProjectName(AssemblyFile);
return prjojectName;
}
} </script> namespace <%=GetBusinessLogicProjectName%>.Managers
{
[RemoteService("<%=GetEntityName%>Manager")]
public class <%=GetEntityName%>Manager : Foundation.Common.ManagerBase, I<%=GetEntityName%>Manager
{
public <%=GetFullEntityName%> Get<%=GetEntityName%>(<% for (int i = 0; i < SourceTable.PrimaryKey.MemberColumns.Count; i++) { %><%=SourceTable.PrimaryKey.MemberColumns[i].SystemType %> <%= EntityClassHelper.TrimFieldName(SourceTable.PrimaryKey.MemberColumns[i].Name)%><%=JudgeCommon(i,SourceTable.PrimaryKey.MemberColumns.Count-1)%><% } %>)
{
return Get<%=GetEntityName%>(<% for (int i = 0; i < SourceTable.PrimaryKey.MemberColumns.Count; i++) { %><%= EntityClassHelper.TrimFieldName(SourceTable.PrimaryKey.MemberColumns[i].Name)%><%=JudgeCommon(i,SourceTable.PrimaryKey.MemberColumns.Count-1)%><% } %>,null);
} public <%=GetFullEntityName%> Get<%=GetEntityName%>(<% for (int i = 0; i < SourceTable.PrimaryKey.MemberColumns.Count; i++) { %><%=SourceTable.PrimaryKey.MemberColumns[i].SystemType %> <%= EntityClassHelper.TrimFieldName(SourceTable.PrimaryKey.MemberColumns[i].Name)%><%=JudgeCommon(i,SourceTable.PrimaryKey.MemberColumns.Count-1)%><% } %>,IPrefetchPath2 prefetchPath)
{
return Get<%=GetEntityName%>(<% for (int i = 0; i < SourceTable.PrimaryKey.MemberColumns.Count; i++) { %><%= EntityClassHelper.TrimFieldName(SourceTable.PrimaryKey.MemberColumns[i].Name)%><%=JudgeCommon(i,SourceTable.PrimaryKey.MemberColumns.Count-1)%><% } %>,prefetchPath,null);
} public <%=GetFullEntityName%> Get<%=GetEntityName%>(<% for (int i = 0; i < SourceTable.PrimaryKey.MemberColumns.Count; i++) { %><%=SourceTable.PrimaryKey.MemberColumns[i].SystemType %> <%= EntityClassHelper.TrimFieldName(SourceTable.PrimaryKey.MemberColumns[i].Name)%><%=JudgeCommon(i,SourceTable.PrimaryKey.MemberColumns.Count-1)%><% } %>,IPrefetchPath2 prefetchPath,ExcludeIncludeFieldsList fieldList)
{
<%=GetFullEntityName%> _<%=GetEntityName%>=new <%=GetFullEntityName%>(<% for (int i = 0; i < SourceTable.PrimaryKey.MemberColumns.Count; i++) { %><%= EntityClassHelper.TrimFieldName(SourceTable.PrimaryKey.MemberColumns[i].Name)%><%=JudgeCommon(i,SourceTable.PrimaryKey.MemberColumns.Count-1)%><% } %>);
using (DataAccessAdapterBase adapter=GetCompanyDataAccessAdapter())
{
bool found=adapter.FetchEntity(_<%=GetEntityName%>, prefetchPath, null, fieldList);
if (!found) throw new Foundation.Common.RecordNotFoundException("Invalid <%=GetEntityName%>");
}
return _<%=GetEntityName%>;
} public EntityCollection Get<%=GetEntityName%>Collection(IRelationPredicateBucket filterBucket)
{
return Get<%=GetEntityName%>Collection(filterBucket,null);
} public EntityCollection Get<%=GetEntityName%>Collection(IRelationPredicateBucket filterBucket,ISortExpression sortExpression)
{
return Get<%=GetEntityName%>Collection(filterBucket,sortExpression,null);
} public EntityCollection Get<%=GetEntityName%>Collection(IRelationPredicateBucket filterBucket,ISortExpression sortExpression, IPrefetchPath2 prefetchPath)
{
return Get<%=GetEntityName%>Collection(filterBucket,sortExpression,prefetchPath,null);
} public EntityCollection Get<%=GetEntityName%>Collection(IRelationPredicateBucket filterBucket, ISortExpression sortExpression, IPrefetchPath2 prefetchPath, ExcludeIncludeFieldsList fieldList)
{
EntityCollection <%=GetEntityName%>Collection =new EntityCollection(new <%=GetEntityName%>EntityFactory());
using (DataAccessAdapterBase adapter =GetCompanyDataAccessAdapter())
{
adapter.FetchEntityCollection(<%=GetEntityName%>Collection, filterBucket, 0,sortExpression, prefetchPath, fieldList);
}
return <%=GetEntityName%>Collection ;
} public <%=GetFullEntityName%> Save<%=GetEntityName%>(<%=GetFullEntityName%> <%=GetEntityName%>)
{
return Save<%=GetEntityName%>(<%=GetEntityName%>,null);
} public <%=GetFullEntityName%> Save<%=GetEntityName%>(<%=GetFullEntityName%> <%=GetEntityName%> ,EntityCollection entitiesToDelete)
{
return Save<%=GetEntityName%>(<%=GetEntityName%>,entitiesToDelete,string.Empty);
} public <%=GetFullEntityName%> Save<%=GetEntityName%>(<%=GetFullEntityName%> <%=GetEntityName%>, EntityCollection entitiesToDelete, string seriesCode)
{
using (DataAccessAdapterBase adapter =GetCompanyDataAccessAdapter())
{
try
{
adapter.StartTransaction(IsolationLevel.ReadCommitted, "Save<%=GetEntityName%>");
adapter.SaveEntity(<%=GetEntityName%>, true, false);
adapter.Commit();
}
catch
{
adapter.Rollback();
throw;
}
}
return <%=GetEntityName%>;
} public void Delete<%=GetEntityName%>(<%=GetFullEntityName%> <%=GetEntityName%>)
{
using (DataAccessAdapterBase adapter =GetCompanyDataAccessAdapter())
{
if (!adapter.IsEntityExist<<%=GetFullEntityName%>>(<%=GetEntityName%>))
return; try
{
adapter.StartTransaction(IsolationLevel.ReadCommitted, "Delete<%=GetEntityName%>");
adapter.DeleteEntity(<%=GetEntityName%>);
adapter.Commit();
}
catch
{
adapter.Rollback();
throw;
}
}
} public bool Is<%=GetEntityName%>Exist(<% for (int i = 0; i < SourceTable.PrimaryKey.MemberColumns.Count; i++) { %><%=SourceTable.PrimaryKey.MemberColumns[i].SystemType %> <%= EntityClassHelper.TrimFieldName(SourceTable.PrimaryKey.MemberColumns[i].Name)%><%=JudgeCommon(i,SourceTable.PrimaryKey.MemberColumns.Count-1)%><% } %>)
{
RelationPredicateBucket filterBucket = new RelationPredicateBucket();
<% for (int i = 0; i < SourceTable.PrimaryKey.MemberColumns.Count; i++) { %>
filterBucket.PredicateExpression.Add(<%=GetEntityName%>Fields.<%=EntityClassHelper.TrimFieldName(SourceTable.PrimaryKey.MemberColumns[i].Name)%>==<%=EntityClassHelper.TrimFieldName(SourceTable.PrimaryKey.MemberColumns[i].Name)%>);
<% } %>
return Is<%=GetEntityName%>Exist(filterBucket);
} public bool Is<%=GetEntityName%>Exist(IRelationPredicateBucket filterBucket)
{
return (Get<%=GetEntityName%>Count(filterBucket) > 0);
} public int Get<%=GetEntityName%>Count(IRelationPredicateBucket filterBucket)
{
using (DataAccessAdapterBase adapter =GetCompanyDataAccessAdapter())
{
return adapter.GetDbCount<<%=GetFullEntityName%>>(filterBucket);
}
} public <%=GetFullEntityName%> Clone<%=GetEntityName%>(<% for (int i = 0; i < SourceTable.PrimaryKey.MemberColumns.Count; i++) { %><%=SourceTable.PrimaryKey.MemberColumns[i].SystemType %> <%= EntityClassHelper.TrimFieldName(SourceTable.PrimaryKey.MemberColumns[i].Name)%><%=JudgeCommon(i,SourceTable.PrimaryKey.MemberColumns.Count-1)%><% } %>)
{
<%=GetFullEntityName%> source = this.Get<%=GetEntityName%>(<% for (int i = 0; i < SourceTable.PrimaryKey.MemberColumns.Count; i++) { %><%= EntityClassHelper.TrimFieldName(SourceTable.PrimaryKey.MemberColumns[i].Name)%><%=JudgeCommon(i,SourceTable.PrimaryKey.MemberColumns.Count-1)%><% } %>);
<%=GetFullEntityName%> _<%=GetEntityName%> = (<%=GetFullEntityName%>)CloneEntity(source);
<%-- //try to remove all primary key
//currency.Ccy = string.Empty;
//currency.CreatedBy = Shared.CurrentUser.UserId;
//currency.CreatedDate = DateTime.Now;
//currency.RevisedBy = Shared.CurrentUser.UserId;
//currency.RevisedDate = DateTime.Now; --%>
return _<%=GetEntityName%>;
} public void Post<%=GetEntityName%>(<% for (int i = 0; i < SourceTable.PrimaryKey.MemberColumns.Count; i++) { %><%=SourceTable.PrimaryKey.MemberColumns[i].SystemType %> <%= EntityClassHelper.TrimFieldName(SourceTable.PrimaryKey.MemberColumns[i].Name)%><%=JudgeCommon(i,SourceTable.PrimaryKey.MemberColumns.Count-1)%><% } %>)
{
return;
}
public void Post<%=GetEntityName%>(<%=GetFullEntityName%> <%=GetEntityName%>)
{
return;
}
}
}
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
Enterprise Solution 生成实体数据访问接口与实现类型 Code Smith 6.5 模板文件下载的更多相关文章
- Dojo Data Store——统一数据访问接口
原文地址:http://www.infoq.com/cn/articles/wq-dojo-data-store 无论在传统的桌面应用还是在主流的互联网应用中,数据始终占据着软件应用中的核心地位.当下 ...
- Razor视图引擎布局 Razor视图引擎的基本概念与法语 SQL Server Mobile 和 .NET 数据访问接口之间的数据类型映射 binary 和 varbinary datetime 和 smalldatetime float 和 real
Razor视图引擎布局 不需要像过去aspx一样,使用.Master文件,而是统一使用.cshtml 或 .vbhtml文件.但文件名一般以 _开头,这样做文件不会当做View显示出来 使用@Re ...
- SQL Server 提供的各种数据访问接口
在创建SQL Server的链接服务器时,可以看到有如下几种访问接口,其中我们常用的只有1.3.4.6.其中4是安装Oracle客户端才会出现的接口,3.6是由于我电脑上装了2008R2和2012两个 ...
- mybatis逆向工程自动生成实体类、接口以及映射Mapper.xml配置文件
Mybatis的逆向工程非常简单,只要一个配置文件和一个Main方法就可以实现,下面以maven工程为例: (1)在pom.xml中引入依赖包 <dependency> <group ...
- Enterprise Solution 3.1 企业应用开发框架 .NET ERP/CRM/MIS 开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms
行业:基于数据库的制造行业管理软件,包含ERP.MRP.CRM.MIS.MES等企业管理软件 数据库平台:SQL Server 2005或以上 系统架构:C/S 开发技术 序号 领域 技术 1 数据库 ...
- vue-elem-配置静态模拟数据访问接口
使用本地mock数据模拟真实数据配置 static/data.json dev.server.js中 var app=express();之后添加以下代码, var appData=require(' ...
- SQL Server Mobile 和 .NET 数据访问接口之间的数据类型映射
.NET 数据类型 SQL Server Mobile 数据类型 binary varbinary boolean bit byte tinyint byte[] varbinary dateti ...
- Enterprise Solution 管理软件开发框架流程实战
1 定义模块和功能 执行系统功能(SAUTSF),在系统主文件(System Master File SAMF)模块中增加功能SAMFEM,Employee Master. 给有权限的用户组分配功能S ...
- Spring Boot的数据访问:CrudRepository接口的使用
示例 使用CrudRepository接口访问数据 创建一个新的Maven项目,命名为crudrepositorytest.按照Maven项目的规范,在src/main/下新建一个名为resource ...
随机推荐
- 先说IEnumerable,我们每天用的foreach你真的懂它吗?
我们先思考几个问题: 为什么在foreach中不能修改item的值? 要实现foreach需要满足什么条件? 为什么Linq to Object中要返回IEnumerable? 接下来,先开始我们的正 ...
- 【.net 深呼吸】设置序列化中的最大数据量
欢迎收看本期的<老周吹牛>节目,由于剧组严重缺钱,故本节目无视频无声音.好,先看下面一个类声明. [DataContract] public class DemoObject { [Dat ...
- Connect() 2016 大会的主题 ---微软大法好
文章首发于微信公众号"dotnet跨平台",欢迎关注,可以扫页面左面的二维码. 今年 Connect 大会的主题是 Big possibilities. Bold technolo ...
- 让姑姑不再划拳 码农也要有原则 : SOLID via C#
“姑娘,别这样.我们是有原则的.” “一个有原则的程序猿是不会写出 “摧毁地球” 这样的程序的,他们会写一个函数叫 “摧毁行星”而把地球当一个参数传进去.” “对,是时候和那些只会滚键盘的麻瓜不同了, ...
- 深入理解CSS中的margin负值
前面的话 margin属性在实际中非常常用,也是平时踩坑较多的地方.margin折叠部分相信不少人都因为这样那样的原因中过招.margin负值也是很常用的功能,很多特殊的布局方法都依赖于它.它看似简单 ...
- 前端学HTTP之实体和编码
前面的话 每天都有各种媒体对象经由HTTP传送,如图像.文本.影片以及软件程序等.HTTP要确保它的报文被正确传送,识别.提取以及适当处理.为了实现这些目标,HTTP使用了完善的标签来描述承载内容的实 ...
- MJRefresh 源码解读 + 使用
MJRefresh这个刷新控件是一款非常好用的框架,我们在使用一个框架的同时,最好能了解下它的实现原理,不管是根据业务要求在原有的基础上修改代码,还是其他的目的,弄明白作者的思路和代码风格,会受益匪浅 ...
- PHP代码优化
1 代码优化 1 尽量静态化 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍. 当然了,这个测试方法需要在十万级以上次执行,效果才明显. 其实静态方法和 ...
- JAVA面试题
在这里我将收录我面试过程中遇到的一些好玩的面试题目 第一个面试题:ABC问题,有三个线程,工作的内容分别是打印出"A""B""C",需要做的 ...
- 最新的 cocoaPods 安装方法
经过努力终于发现了最新的 解决cocoaPods安装的办法: taobao Gems 源已停止维护,现由 ruby-china 提供镜像服务 第一步:安装rvm, 不管需不需要升级ruby,rvm可以 ...