asp.net技术(公共方法)
大量数据写入数据库方法:SqlServer优化之批量插入(SqlBulkCopy、表值参数)
#region 获取 本周、本月、本季度、本年 的开始时间或结束时间
/// <summary>
/// 获取开始时间
/// </summary>
/// <param name="TimeType">Week、Month、Season、Year</param>
/// <param name="now"></param>
/// <returns>2017-01-01 00:00:00</returns>
public static DateTime? GetTimeStartByType(string TimeType, DateTime now)
{
switch (TimeType)
{
case "Week":
return now.AddDays(-(now.DayOfWeek == ? : (int)now.DayOfWeek) + ).Date;
case "Month":
return now.AddDays(-now.Day + ).Date;
case "Season":
var time = now.AddMonths( - ((now.Month - ) % ));
return time.AddDays(-time.Day + ).Date;
case "Year":
return now.AddDays(-now.DayOfYear + ).Date;
default:
return null;
}
} /// <summary>
/// 获取结束时间
/// </summary>
/// <param name="TimeType">Week、Month、Season、Year</param>
/// <param name="now"></param>
/// <returns>2017-12-31 23:59:59</returns>
public static DateTime? GetTimeEndByType(string TimeType, DateTime now)
{
DateTime dt = new DateTime();
switch (TimeType)
{
case "Week":
dt = now.AddDays( - (now.DayOfWeek == ? : (int)now.DayOfWeek)).Date; break;
case "Month":
dt = now.AddMonths().AddDays(-now.AddMonths().Day + ).AddDays(-).Date; break;
case "Season":
var time = now.AddMonths(( - ((now.Month - ) % ) - ));
dt = time.AddMonths().AddDays(-time.AddMonths().Day + ).AddDays(-).Date; break;
case "Year":
var time2 = now.AddYears();
dt = time2.AddDays(-time2.DayOfYear).Date; break;
default:
return null;
}
return dt.AddDays().AddSeconds(-);
}
#endregion
//ashx页面下调用多种方法
public void ProcessRequest(HttpContext context)
{
var dataType = context.Request["DataType"];
var keyid = context.Request["Keyid"];
var cMethod = string.Format("Get{0}", dataType);
var tp = typeof(DataFetch);
var mi = tp.GetMethod(cMethod);
if (mi != null)
{
mi.Invoke(Activator.CreateInstance(tp), new object[] { context, keyid });
}
}
/// <summary>
/// 获取用户信息
/// </summary>
/// <param name="keyid"></param>
public void GetUser(HttpContext context, string keyid)
{
var context = HttpContext.Current;
//var param = context.Request["Param"];
context.WriteJson(json);
}
/*泛型转换*/
/// <summary>
/// 获取视图状态的属性值
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="stateName">视图状态名称</param>
/// <param name="defauleValue">默认值</param>
public T GetState<T>(string stateName, T defauleValue)
{
T m_Value = defauleValue;
if (ViewState[stateName] != null)
{
m_Value = (T)ViewState[stateName];
}
return m_Value;
} /// <summary>
/// 获取视图状态的属性值
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="stateName">视图状态名称</param>
public T GetState<T>(string stateName)
{
return GetState<T>(stateName, default(T));
} private List<T_AberRedSetInfo> listAberRedSet
{
get { return this.GetState<List<T_AberRedSetInfo>>("T_AberRedSet"); }
set { this.SetState("T_AberRedSet", value); }
}
强制对所有代进行即时垃圾回收 GC.Collect();
深度拷贝与浅复制
///复制List--当然前题是List中的对象要实现ICloneable接口
public static IList<T> Clone<T>(this IList<T> listToClone) where T: ICloneable
{
return listToClone.Select(item => (T)item.Clone()).ToList();
}
#region Object拓展,深复制,对象转换
/// <summary>
/// 深复制,就是完全复制Clone,代替ICloneable接口
/// </summary>
/// <param name="oSource"></param>
/// <returns></returns>
public static T DeepCopy<T>(this T oSource)
{
T oClone;
DataContractSerializer dcs = new DataContractSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream())
{
dcs.WriteObject(ms, oSource);
ms.Position = ;
oClone = (T)dcs.ReadObject(ms);
}
return oClone;
} /// <summary>
/// 将Object对象转换为目标对象,一般用于匿名对象转换。
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <param name="t"></param>
/// <returns></returns>
public static T ChangeObjectType<T>(this object obj, T t)
{
return (T)obj;
}
#endregion
[Serializable]
public class InvoiceDetailResponse : IDeepCopy, IShallowCopy
{ public Guid merchant_id { get; set; }
/// <summary>
/// 名称
/// </summary>
public string uname { get; set; } /// <summary>
/// 浅拷贝
/// </summary>
/// <returns></returns>
public object ShallowCopy()
{
return this.MemberwiseClone();
}
/// <summary>
/// 深拷贝 【不建议使用二进制流方法,此方法即使在类前面加了可序列化标志,调用该方法时也会报未序列化错误】,推荐使用反射方式
/// </summary>
/// <returns></returns>
public object DeepCopy()
{
using (MemoryStream stream = new MemoryStream())
{
BinaryFormatter bFormatter = new BinaryFormatter();
bFormatter.Serialize(stream, this);
stream.Seek(, SeekOrigin.Begin);
return (InvoiceDetailResponse)bFormatter.Deserialize(stream);
}
}
}
/// <summary>
/// 深拷贝接口
/// </summary>
interface IDeepCopy
{
object DeepCopy();
} /// <summary>
/// 浅拷贝接口
/// </summary>
interface IShallowCopy
{
object ShallowCopy();
}
///利用反射实现
public static T DeepCopyByReflection<T>(T obj)
{
if (obj is string || obj.GetType().IsValueType)
return obj; object retval = Activator.CreateInstance(obj.GetType());
FieldInfo[] fields = obj.GetType().GetFields(BindingFlags.Public|BindingFlags.NonPublic|BindingFlags.Static|BindingFlags.Instance);
foreach(var field in fields)
{
try
{
field.SetValue(retval, DeepCopyByReflection(field.GetValue(obj)));
}
catch { }
} return (T)retval;
}
public static T Clone<T>(T RealObject)
{
using (Stream objectStream = new MemoryStream())
{
//利用 System.Runtime.Serialization序列化与反序列化完成引用对象的复制
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(objectStream, RealObject);
objectStream.Seek(, SeekOrigin.Begin);
return (T)formatter.Deserialize(objectStream);
}
}
#region Object拓展,深复制,对象转换 /// <summary> /// 深复制,就是完全复制Clone,代替ICloneable接口 /// </summary> /// <param name="oSource"></param> /// <returns></returns> public static T DeepCopy<T>(this T oSource) { T oClone; DataContractSerializer dcs = new DataContractSerializer(typeof(T)); using (MemoryStream ms = new MemoryStream()) { dcs.WriteObject(ms, oSource); ms.Position = 0; oClone = (T)dcs.ReadObject(ms); } return oClone; }
/// <summary> /// 将Object对象转换为目标对象,一般用于匿名对象转换。 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="obj"></param> /// <param name="t"></param> /// <returns></returns> public static T ChangeObjectType<T>(this object obj, T t) { return (T)obj; } #endregion
asp.net技术(公共方法)的更多相关文章
- ASP.NET一些公共方法commTools
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...
- web开发过程中经常用到的一些公共方法及操作
进化成为程序猿也有段岁月了,所谓的经验,广度还是依旧,只不过是对于某种功能有了多种实现方式的想法.每天依旧不厌其烦的敲打着代码,每一行代码的回车似乎都有一种似曾相识的感觉.于是乎:粘贴复制,再粘贴再复 ...
- [Guava官方文档翻译] 5. Guava的Object公共方法 (Common Object Utilities Explained)
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3537367.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...
- (转)探讨:ASP.NET技术的学习顺序问题
探讨:ASP.NET技术的学习顺序问题 摘要:很多人对于ASP.NET的入门和学习顺序比较迷茫,今天让我们一起来跟随作者的思路学习探讨ASP.NET的学习顺序问题,希望有所帮助. 如果你已经有较多的面 ...
- 【转】探讨:ASP.NET技术的学习顺序问题
摘要:很多人对于ASP.NET的入门和学习顺序比较迷茫,今天让我们一起来跟随作者的思路学习探讨ASP.NET的学习顺序问题,希望有所帮助. 如果你已经有较多的面向对象开发经验,跳过以下这两步: 第一步 ...
- ASP.NET技术总结
ASP.NET是ASP相关技术的最新版本,它如何工作: (经典)ASP的后缀名是".asp",通常用VB编写:ASP.NET是".aspx"—— ASP.NET ...
- ASP程序加密/解密方法大揭密
如今,用ASP技术构建的网站随处可见.由于ASP脚本是在服务器上解释执行的(无法编译),因此你辛苦开发出来的ASP代码,很容易被人拷去任意修改,如何保护ASP源代码呢?这是每个ASP站长都会遇到的 ...
- J2EE项目开发中常用到的公共方法
在项目IDCM中涉及到多种工单,包括有:服务器|网络设备上下架工单.服务器|网络设备重启工单.服务器光纤网线更换工单.网络设备撤线布线工单.服务器|网络设备替换工单.服务器|网络设备RMA工单.通用原 ...
- php 图片上传的公共方法(按图片宽高缩放或原图)
写的用于图片上传的公共方法类调用方法: $upload_name='pic';$type = 'logo_val';$file_name = 'logo_' . $user_id .create_st ...
- 【ASP.NET实战教程】基于ASP.NET技术下多用户博客系统全程实战开发(NNblog)
岁末主推:牛牛老师主讲,多用户博客系统,基于ASP.NET技术,年后将带来移动业务平台项目项目目标: 打造个性品牌Blogo,定制多用户博客 为每一个博客用户提供个性化的 blogo解决方案,打造精品 ...
随机推荐
- SpringIOC注入模块中xml文件导入其他xml文件配置
如果我们在spring框架中配置了多个xml文件,我们可以在读取配置文件的时候把这些xml文件一下全都读取 也可以只读一个总的xml文件,在这个总的xml文件中把其他的xml全都都导入进来. 例如: ...
- CAS添加验证码功能
1. cas.war 下面的web-inf/web.xml lib添加 kaptcha.jar kaptcha.jar通过maven获取 <dependency> <group ...
- Activiti历史查看
流程执行完毕后,究竟去了哪里有些疑问. 虽然已完成的任务在act_ru_task和act_ru_execution表中都已被删除,但是这些数据还存在activiti的数据库中,作为历史改由Histor ...
- Spring MVC 返回 xml json pdf 数据的配置方法
<!-- Spring MVC 返回 xml 数据的配置方法 --> <bean class="org.springframework.web.servlet.vi ...
- js检测到如果是手机端就跳转到手机端的网址代码
if((/AppleWebKit.*Mobile/i.test(navigator.userAgent)||/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcat ...
- 工控安全入门(三)—— 再解S7comm
之前的文章我们都是在ctf的基础上学习工控协议知识的,显然这样对于S7comm的认识还不够深刻,这次就做一个实战补全,看看S7comm还有哪些值得我们深挖的地方. 本篇是对S7comm的补全和实战,阅 ...
- struts2-result-servletAPI-获得参数-参数封装
1 结果跳转方式 转发 重定向 转发到Action 重定向到Action 2 访问servletAPI方式 2.1 原理 2.2 获得API 通过ActionContext ★★★★ 通过Servl ...
- java随机生成字符串工具类
package aA; import java.util.ArrayList; import java.util.Arrays; import java.util.Random; /** * 字符随机 ...
- 2018-10-20-C#-从零开始写-SharpDx-应用-初始化dx修改颜色
title author date CreateTime categories C# 从零开始写 SharpDx 应用 初始化dx修改颜色 lindexi 2018-10-20 17:34:37 +0 ...
- GYM100633J. Ceizenpok’s formula 扩展lucas模板
J. Ceizenpok’s formula time limit per test 2.0 s memory limit per test 256 MB input standard input o ...