mg4155com > mg4155线路检测手机版 > 邮箱等趁机音讯,自定义进程条

原标题:邮箱等趁机音讯,自定义进程条

浏览次数:121 时间:2019-10-04

 myTestProgressBar1.RedVlues = 230.33M; myTestProgressBar1.YellowVlues = 150.3M; myTestProgressBar1.GreenValues = 70.5M; while  { myTestProgressBar1.InnerRectHeight = myTestProgressBar1.InnerRectHeight + 1; myTestProgressBar1.Content = myTestProgressBar1.InnerRectHeight.ToString(); myTestProgressBar1.Refresh(); Thread.Sleep; }

做项指标时候,页面上有一点敏感消息,须求用“*”掩饰一些比较首要的音讯,于是准备写一个通用的主意。

去网络寻找一下很轻便就足以寻找到了,下载下来现在解压到桌面里边应该是有一个skins文件夹和三个.dll文件如下图:

ASP.NET MVC 开辟实例

近几年前端发展急迅,大有不必要后端之大势。node.js+webpack小编后天也是有在观察学习中,的确,很酷。不过我并未进展产品开拓,因为这种东西一投入,说不定马上就有一个更酷的框架出来。学习框架和您做投资同样,都需求资本。新框架带来了部分新本领,也拉动了新主题素材。但出于是开源的关系,全部的难题都相当慢获得解决。同期,需要不一致也就营造前日框架盛行的局面。没有宏观的架构,独有顺应的架构,倘让你想要有三个截然合作你要求的框架,那么就协和写三个。非常多有实力的公司正是这么做的。

骨子里,笔者更愿意做的事,就是在本来的工夫上,包容现在流行的MV*前端框架,以完成迅速开荒的指标,要是产品页须要SEO,那么回到C#,用守旧的后端对页面进行渲染。要达成数量灵活绑定,耳闻则诵。

自家希望这一雨后鞭笋的课本,是从ASP.NET MVC入门发轫,再开辟一套Mini的百货公司网址,最终写一套属于自个儿的MVC架构出来。那是二个上100000字的大工程,然则只要能在业余时间做出来,笔者会很崇拜我要好的。打算了两套入门方案,一套构建Empty模板,为注册会员代码。一套为自动生成代码的留言板方案,然后修改。以此来拉长入门体验。

从现行反革命上马吧,展开Visual Studio 二〇一六,先来做个例证。

上边是三个客户管理的实例,那些实例未有涉及到其余数据库,当然也不会有Identity,下边这几个实例只是令你基本的刺探一下MVC的基本操作概念。(本例子仿照效法了《领会ASP.NET MVC5》,书中第二章:第一个MVC应用程序。)

新建项目,在已设置-模板里面选用Web,创设二个ASP.NET Web 应用程序,如下图。本例命名称为alexzeng,当然你能够改为您欢悦的其旁人字,不背弃命名法规就足以。

图片 1开创贰个ASP.NET Web 应用程序

在弹出来的新建ASP.NET 项目里面选拔二个Empty模板,为以下添Gavin件夹和着力引用点击MVC。

图片 2选择Empty模板

然后在减轻方案财富管理器的窗口里面,找到Controllers,右击新建一个新的调控器,如下图,选取MVC 5调节器-空。命名称为HomeController.cs 。

图片 3

暗中认可代码如下:

using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;namespace alexzengnet.Controllers{ public class HomeController : Controller { // GET: Home public ActionResult Index() { return View(); } }}

当今我们还运维不了那几个网址,稍微改一下代码:

 public string Index() { return "<h1>欢迎光临</h1>"; }

按一下F5,能够初步浏览到网站了,一个基于ASP.NET框架的网址为主建设构造了。

再把代码恢复生机成暗中认可的轨范,对着Index右击鼠标,新建视图,在弹出来的窗口,按暗许值就能够。

图片 4

将代码修改成上边包车型大巴指南,运营一下,是否和刚刚一律

@{ Layout = null;}<!DOCTYPE html><html><head> <meta name="viewport" content="width=device-width" /> <title>Index</title></head><body> <div> <h1>欢迎光临!</h1> </div></body></html>

回去HomeController.cs,我们给代码增加一点动态,在此处大家利用的是ViewBag。

将数据传给视图的一种方法是利用了ViewBag, ViewBag是一个动态的指标,能够授予它任何性质。

上边包车型大巴例子正是亲自去做怎么着行使ViewBag。

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;namespace alexzengnet.Controllers{ public class HomeController : Controller { // GET: Home public ActionResult Index() { int hour = DateTime.Now.Hour; ViewBag.SayHi=hour<12?"早上好":"下午好"; return View(); } }}

再展开视图像和文字件:Index.cshtml,修改一下代码:

@{ Layout = null;}<!DOCTYPE html><html><head> <meta name="viewport" content="width=device-width" /> <title>Index</title></head><body> <div> <h1>欢迎光临!</h1> <p>@ViewBag.SayHi</p> @Html.ActionLink("注册会员","REG") </div></body></html>

运营一下尝试,它会根据你日前的时光展现中午好可能晌午好,那是一个最简便易行的MVC程序。上边大家将传承完善它,大家会构成流行的Bootstrap ,做一个简便的挂号会员程序。

今昔,首先大家先来安夸口ootstrap

张开工具菜单,点击NuGet程序包管理器里面的次序包管理器调控台。它是多个PowerShell的运转条件,在调整台里面输入:

Install-Package -version 3.0.0 bootstrap

成功了安装程序后会有提醒:已将“bootstrap 3.0.0”成功安装到 alexzengnet。

本人在制作网页的时候,平日是先做PS文件,然后通过PS做成html,最后将html分拆成本身所需求的cshtml。下面正是加载了bootstrap 的登记页面。

<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <meta charset="utf-8" /> <link href="Content/bootstrap.min.css" rel="stylesheet"> <script src="Scripts/jquery-1.9.0.min.js"></script> <script src="Scripts/jquery-1.9.0.min.js"></script> <style> body { padding-top:50px; color:#FFF; background:#444; } div {margin:5px auto;} h1 { color: #fff; } #content{ width:100%; min-height:600px; background:#444; padding-top:20px; color:#FFF; } .register{ padding: 20px; font-weight:700; border:#FFF solid 1px; -moz-border-radius: 10px; /* Gecko browsers */ -webkit-border-radius: 10px; /* Webkit browsers */ border-radius:10px; /* W3C syntax */ } .col-sm-3{ line-height:48px; } </style></head><body> <div > <div > <form> <div > <h1 >注册</h1> </div> <div > <div > <label for="username" >用户名:</label> <div > <div > <input type="text" name="username" placeholder="请输入用户名"> <div >  </div> </div> </div> </div> <div > <label for="password" >密码:</label> <div > <div > <input type="password" name="password" placeholder="请输入密码"> <div >  </div> </div> </div> </div> <div > <label for="chkpwd" >确认密码:</label> <div > <div > <input type="password" name="chkpwd" placeholder="请确认密码"> <div >  </div> </div> </div> </div> <div > <label for="email" >邮箱:</label> <div > <div > <input type="text" name="email" placeholder="请输入有效邮箱"> <div >  </div> </div> </div> </div> </div> <div > <div > <button type="reset" > <b>清空</b>  </button> </div> <div > <button type="submit" > <b>提交</b>  </button> </div> </div> </form> </div> </div></body></html>

运维测验,基本成功。

随后大家来设计多少个数据模型类:命名叫User.cs。在缓和系统方案能源管理器窗口的Models右击,新建项,类,名称User.cs。

下边是此类代码:

using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace alexzengnet.Models{ public class User { public int Id { get; set; } public string Name{ get; set; } public string PassWord { get; set; } public string phone { get; set; } public string email { get; set; } }}

然后Ctrl+Shift+B,生成实施方案。相当于将以此类实行编写翻译。

张开HomeController.cs,在Index下边步向以下代码

 public ActionResult REG() { return View(); }

右击REG,增添视图,那时候须求的强类型视图,所以跟上面增加index视图略有不一样。设置如下图:

图片 5

接下来稍微写一些代码进去,测量检验一下:

@model alexzengnet.Models.User@{ Layout = null;}<!DOCTYPE html><html><head> <meta name="viewport" content="width=device-width" /> <title>REG</title></head><body> <div> @using (Html.BeginForm { <p>Name:@Html.TextBoxFor(x=>x.Name)</p> <p>Password:@Html.PasswordFor(x => x.PassWord)</p> <p>Phone:@Html.TextBoxFor(x => x.phone)</p> <input type="submit" value="submit" /> } </div></body></html>

运作了后头,基本能够满意自个儿的渴求,以往自家对它举办样式化,将我们刚刚做的加载了bootstrap的html页面复制到那边来,注意代码的成形,如下所示:

@model alexzengnet.Models.User@{ Layout = null;}<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <meta charset="utf-8" /> <link href="~/Content/bootstrap.min.css" rel="stylesheet"> <script src="~/Scripts/jquery-1.9.0.min.js"></script> <script src="~/Scripts/bootstrap.min.js"></script> <style> body { padding-top: 50px; color: #FFF; background: #444; } div { margin: 5px auto; } h1 { color: #fff; } #content { width: 100%; min-height: 600px; background: #444; padding-top: 20px; color: #FFF; } .register { padding: 20px; font-weight: 700; border: #FFF solid 1px; -moz-border-radius: 10px; /* Gecko browsers */ -webkit-border-radius: 10px; /* Webkit browsers */ border-radius: 10px; /* W3C syntax */ } .col-sm-3 { line-height: 48px; } </style></head><body> <div > <div > @using (Html.BeginForm { <div > <h1 >注册</h1> </div> <div > <div > <label for="username" >用户名:</label> <div > <div > @Html.TextBoxFor(x => x.Name, new { @class= "form-control", @placeholder = "请输入有效用户名" }) <div >  </div> </div> </div> </div> <div > <label for="password" >密码:</label> <div > <div > @Html.PasswordFor(x => x.PassWord, new { @class = "form-control", @placeholder = "请输入有效密码" }) <div >  </div> </div> </div> </div> <div > <label for="chkpwd" >电话:</label> <div > <div > @Html.TextBoxFor(x => x.phone, new { @class = "form-control" , @placeholder= "请输入有效电话" }) <div >  </div> </div> </div> </div> <div > <label for="email" >邮箱:</label> <div > <div > @Html.TextBoxFor(x => x.email, new { @class = "form-control", @placeholder = "请输入有效邮箱" }) <div >  </div> </div> </div> </div> </div> <div > <div > <button type="reset" > <b>清空</b>  </button> </div> <div > <button type="submit" > <b>注册</b>  </button> </div> </div> } </div> </div></body></html>

运营之后,感到没有错,如下图:

图片 6

此刻大家点击注册,将不会有别的反应,上面我们就来钻探一下怎么样写注册的代码。

率先步,先来安装运维UWranglerL,点击项目菜单,选拔本项指标习性,如本例就是alexzengnet属性。在面板中甄选Web,特定页,不用填写任何值即可。如下图。

图片 7

第二步,大家来修改一下HomeController.cs文件,让它响应http的GET,POST。

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using alexzengnet.Models;namespace alexzengnet.Controllers{ public class HomeController : Controller { // GET: Home public ActionResult Index() { int hour = DateTime.Now.Hour; ViewBag.SayHi=hour<12?"早上好":"下午好"; return View(); } [HttpGet] public ActionResult REG() { return View(); } [HttpPost] public ActionResult REG(User user) { return View("Thank", user); } }}

那边的意趣正是如若MVC获取到user数据,那么将动用post央求。使用post将追寻并渲染“Thank”视图。

其三步,成立Thank视图。右击HomeController.cs文件,增多三个强类型菜单视图。如下图:

图片 8

修改一下新建的Thank.cshtml,代码如下:

@model alexzengnet.Models.User@{ Layout = null;}<!DOCTYPE html><html><head> <meta name="viewport" content="width=device-width" /> <title>Thank</title></head><body> <div> <h1>多谢注册本站,@Model.Name</h1> </div></body></html>

测量检验一下打响,但对此会员注册,我们一再要求充实一些输入验证,防止备客商一些无效的输入:

第一步张开User.cs,扩大表明准则表明,在那个命名空间里面using System.ComponentModel.DataAnnotations; 做评释,上面是代码:

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.ComponentModel.DataAnnotations;namespace alexzengnet.Models{ public class User { public int Id { get; set; } [Required(ErrorMessage ="请输入用户名。")] public string Name{ get; set; } [Required(ErrorMessage = "请输入密码。")] public string PassWord { get; set; } [Required(ErrorMessage = "请输入电话。")] public string phone { get; set; } [Required(ErrorMessage = "请输入Email。")] [RegularExpression(".+\@.+\..+", ErrorMessage ="请输入正确的Email地址")] public string email { get; set; } }}

其次步修改reg.cshtml文件,在急需提醒错误的地点加上@Html.ValidationSummary() 以下省略掉不供给的代码,示比方下:

 @using (Html.BeginForm { <div > <h1 >注册</h1> </div> <div > <div role="alert"> <button type="button" data-dismiss="alert">&times;Close</button> <strong>@Html.ValidationSummary()</strong> </div> ...... }

其三步修改HomeController.cs文件,做四个决断,借使爆发错误提醒,就不查找并渲染文件。

[HttpPost] public ActionResult REG(User user) { if (ModelState.IsValid) { return View("Thank", user); } else { return View(); } }

测量试验完了!

那三个例证并从未写入数据库,它通过二个全空的MVC,一步一步的往里面填充代码,纯熟一下视图、调节器、MODEL之间的关系,对MVC有了三个初步的通晓。

下两个例子大家会用二个简练的留言板作为例子,你将见到用极轻巧的代码将自动生成留言板,并写入数据库,还或者有了修改、删除等操作数据库功能。然后大家再对其张开退换,以满意大家的安排性供给。

从Nuget Server引用Package

有三种情势:

  • 通过Nuget Package Manager来引用
  • 经过命令行来引用

这里讲多少个常用命令行的操作, 通过Tools > Nuget Package Manager > Packge Manage Console, 展开Package Manage Console

  • 查阅可用的Package Get-Package -AvailablePackage
  • 安装Package Install-Package [PackageID] [-Version]
  • 更新Package Update-Package
  • 卸载Package UnInstall-Package
  • 清空本地nuget Package Cache nuget locals all -clear
  • 那一个命令的具体用法,能够经过 Get-Help Command 查找帮助
  1. 创设打包批管理
if exist $1*.nupkg del $1*.nupkgnuget pack $2 -Build -Prop Configuration=Release -IncludeReferencedProjects -o $1
  1. 制作上传包文件到nuget server feed的批管理
nuget push $1*.nupkg -s [NugetServerURL] [ApiKey]

将[NugetServerURL]和[ApiKey]替换来你本人的NugetServerFeed地址和key

  1. 在Visual Studio的Project右键菜单上添加Pack Nuget Package和Publish Nuget Package菜单

    • Tools 》External Tools... 添加External Command
    • Tools 》 Cutomize... 》Commands 》Context menu... 》Project and Solution Context Menus | Project

      • Add Command 》 Tools
      • 选择External Command n, n正是您前边加多在External Tools中的External Command的是第多少个这里的n正是几
  2. Nuget Server是严峻遵照版本号来打开包管理的,假设同叁个版本号的Package被屡屡被推送到Nuget Server Feed,后推送的会覆盖此前推送的版本。可是地点引用的Package依旧尚未立异,原因是因为在援引Nuget Server Feed上的Package的时候,不但会引用到Solution目录的packages目录下,同时也会被缓存在.nuget的共用缓存目录。多次推送必定要清空公共目录缓存,不然Solution下的packages文件夹中的Package不会被更新。

  3. 若是一个Solution上面包蕴的有着Project都要用Nuget来拓宽包管理,並且它们中间存在依赖关系,则应当服从信任关系由弱到强的逐个实行李包裹装并Push到Nuget Server。倘若Pack的时候选拔了IncludeReferencedProjects参数,引用关系强的Project会自动引用信赖关系弱的Project,前提是连串目录下要有nuspec文件,不然会一向将引用项指标dll满含到Package。

图片 9gif工具玩的倒霉!.gif

Let's do it !

好了,那正是IrisSkin4的详实使用进程了。

在我们的种类, 存在着部分公共Dll, 那些Dll被多量的连串所引用。同临时候这几个公共dll也还要在拓宽版本升级, 由于贫乏版本管理,那个Dll会被随地Copy,导致各样门类所利用的本子不等同。

极端的情况是A项目和B项目都援用了有的Common Dll, 他们引用的Common Dll版本还也许差异, 随着供给的变通,也许在某一天就能够并发让A项目信任B项指标气象。这时大家就或然陷入dll版本陷阱中。

邮箱等趁机音讯,自定义进程条。要是大家有五个好的包管理器, 当管理器中的包晋级的时候,重视这么些包的类型能够获取升迁,那么大家就足以那轻便地让大家的项目一贯依据最新的dll版本, 能够很自然的制止版本陷阱的发生。

在.net的社会风气里, 这些包管理器正是Nuget

Nuget Server的搭建十二分简练, 微软已经为大家什么样都希图好了。

额。。摄像的工具会太会玩,极度轻易的二个进程条,当然还会有大多足以优化的地点,也能够在这一个基础上加码更加的多的机能,例如进程条的style等,因为这段日子干活比较忙,全部都并没一时间总括,接下去会不错整理多年来的题目,记录下来;

扩展

 /// <summary> /// 隐藏手机号详情 /// </summary> /// <param name="phone">手机号</param> /// <param name="left">左边保留字符数</param> /// <param name="right">右边保留字符数</param> /// <returns></returns> public static string HideTelDetails(string phone, int left = 3, int right = 4) { return HideSensitiveInfo(phone, left, right); }

测验结果如下:

图片 10躲藏手提式无线电话机详细的情况格局1

 /// <summary> /// 隐藏手机号详情 /// </summary> /// <param name="phone">手机号</param> /// <param name="left">左边保留字符数</param> /// <param name="right">右边保留字符数</param> /// <returns></returns> public static string HideTelDetails(string phone, int left = 3, int right = 4) { return HideSensitiveInfo1(phone, left, right); }

测验结果如下:

图片 11隐瞒手提式有线电话机详意况式2

 /// <summary> /// 隐藏右键详情 /// </summary> /// <param name="email">邮件地址</param> /// <param name="left">邮件头保留字符个数,默认值设置为3</param> /// <returns></returns> public static string HideEmailDetails(string email, int left = 3) { if (String.IsNullOrEmpty { return ""; } if (System.Text.RegularExpressions.Regex.IsMatch(email, @"w+*@w+*.w+*"))//如果是邮件地址 { int suffixLen =email.Length - email.LastIndexOf; return HideSensitiveInfo(email, left, suffixLen,false); } else { return HideSensitiveInfo; } }

测量检验结果如下:

图片 12hide-email-details.png

先选择侧边列的浏览,再点击右下角的浏览开关,采取大家下载的公文夹里边的IrisSkin4.dll文件,然后点击明确。然后大家会见到技术方案能源管理器的引用上面会多出三个IrisSkin4,如图:

现今, 叁个NugetServer就化解了, 很简短吗?赶紧将Server布署起来吧!!!

作者的想法是那样首先绘制会2个矩形,然后呢外矩形的万丈不改变,内矩形的万丈就来表示大家串口所接受的Weight数据,当班值日扩张照旧缩减的时候也就也便是绘制其内矩形的惊人,然后绘制线条刻度,以及刻度下边包车型客车文字;C#自定义控件跟android 的也差不了多少,重写其onPaint 方法,举行绘图,onPaint方法代码如下,相比较轻便主要的地点笔者都已经付出了解说就不在讲授了;

Method 1.2 : 中间的*的个数固定

 /// <summary> /// 隐藏敏感信息 /// </summary> /// <param name="info">信息实体</param> /// <param name="left">左边保留的字符数</param> /// <param name="right">右边保留的字符数</param> /// <param name="basedOnLeft">当长度异常时,是否显示左边 /// <code>true</code>显示左边,<code>false</code>显示右边 /// <returns></returns> public static string HideSensitiveInfo1(string info, int left, int right, bool basedOnLeft = true) { if (String.IsNullOrEmpty { return ""; } StringBuilder sbText = new StringBuilder(); int hiddenCharCount = info.Length - left - right; if (hiddenCharCount > 0) { string prefix = info.Substring, suffix = info.Substring(info.Length - right); sbText.Append; sbText.Append; sbText.Append; } else { if (basedOnLeft) { if (info.Length > left && left >0) { sbText.Append(info.Substring + "****"); } else { sbText.Append(info.Substring + "****"); } } else { if (info.Length > right && right>0) { sbText.Append("****" + info.Substring(info.Length - right)); } else { sbText.Append("****" + info.Substring(info.Length - 1)); } } } return sbText.ToString(); }

 /// <summary> /// 隐藏敏感信息 /// </summary> /// <param name="info">信息</param> /// <param name="sublen">信息总长与左子串的比例</param> /// <param name="basedOnLeft">当长度异常时,是否显示左边,默认true,默认显示左边 /// <code>true</code>显示左边,<code>false</code>显示右边 /// <returns></returns> public static string HideSensitiveInfo(string info,int sublen = 3,bool basedOnLeft = true) { if (String.IsNullOrEmpty { return ""; } if (sublen<=1) { sublen = 3; } int subLength = info.Length / sublen; if (subLength > 0 && info.Length > (subLength*2) ) { string prefix = info.Substring(0, subLength), suffix = info.Substring(info.Length - subLength); return prefix + "****" + suffix; } else { if (basedOnLeft) { string prefix = subLength > 0 ? info.Substring(0, subLength) : info.Substring; return prefix + "****"; } else { string suffix = subLength > 0 ? info.Substring(info.Length-subLength) : info.Substring(info.Length-1); return "****"+suffix; } } }

前段时间帮大家的硬件程序员搞了三个上位机软件工具,可是搞好之后唯有三个简约的窗体,实在是太low了。若是和煦画的话又比较麻烦终归只是多少个工具软件没要求做的太花哨,所以依旧依赖一下第三方工具,将以此窗体做三个粗略的美化。

  • 其三方Dll, 大家从未源码, 为了保证各类门类中援用的本子能够保持一致, 且能够同期获得更新,大家必要Nuget
  • 咱俩协和发生的公共Dll, 大批量的品类都在引用这么些Dll, 大家也要求Nuget
 protected override void OnPaint(PaintEventArgs e) { greenPen = new Pen(System.Drawing.Color.Green); redPen = new Pen(System.Drawing.Color.Red); yellowPen = new Pen(System.Drawing.Color.Yellow); // 相当于android 的画笔 Pen out_Pen = new Pen(System.Drawing.Color.Gray); // Pen inner_pen = new Pen(System.Drawing.Color.Blue); //这其实也就相当于android canvas; g = e.Graphics; //外 矩形 mOuterRectWeight = this.Width - 40; mOuterRectHeight = this.Height - 100; Rectangle rect = new Rectangle(0, 0, OuterRectWeight, OuterRectHeight); g.DrawRectangle(out_Pen, rect); //内 矩形 Rectangle innerRect = new Rectangle(0, OuterRectHeight - (InnerRectHeight), OuterRectWeight, (InnerRectHeight)); g.DrawRectangle(inner_pen, innerRect); // 色刷 SolidBrush b1 = new SolidBrush(Color.Blue); if (InnerRectHeight >= GreenValues && InnerRectHeight <= YellowVlues) { b1.Color = Color.Green; greenPen.Color = System.Drawing.Color.Black; } if (InnerRectHeight >= YellowVlues && InnerRectHeight <= RedVlues) { b1.Color = Color.Yellow; yellowPen.Color = System.Drawing.Color.Black; greenPen.Color = System.Drawing.Color.Black; } if (InnerRectHeight >= RedVlues) { b1.Color = Color.Red; redPen.Color = System.Drawing.Color.Black; greenPen.Color = System.Drawing.Color.Black; yellowPen.Color = System.Drawing.Color.Black; } //充满 g.FillRectangle(b1, innerRect); // Draw Line onDrawGreentLine(); onDrawYelloLine(); onDrawRedLin(); //drawContent drawBottomContent(); // } private void onDrawGreentLine() { greenPen.Width = 2.0f; int greentVlues = (GreenValues); g.DrawLine(greenPen, 0, OuterRectHeight - greentVlues, OuterRectWeight, OuterRectHeight - greentVlues); // 重量标识 drawContent(GreenValues.ToString(), font, OuterRectWeight, OuterRectHeight - greentVlues); } private void onDrawYelloLine() { yellowPen.Width = 2.0f; int yellowVlues = (YellowVlues); g.DrawLine(yellowPen, 0, OuterRectHeight - yellowVlues, OuterRectWeight, OuterRectHeight - yellowVlues); // 标识 SolidBrush s = new SolidBrush(Color.Yellow); drawContent(YellowVlues.ToString(), font, OuterRectWeight, OuterRectHeight - yellowVlues); } private void onDrawRedLin() { redPen.Width = 2.0f; int redVlues = RedVlues; g.DrawLine(redPen, 0, OuterRectHeight - redVlues, OuterRectWeight, OuterRectHeight - redVlues); // 标识 SolidBrush s = new SolidBrush(Color.Red); drawContent(RedVlues.ToString(), font, OuterRectWeight, OuterRectHeight - redVlues); } private void drawContent(string content, Font f, float x, float y) { SolidBrush s = new SolidBrush(Color.Black); g.DrawString(content, f, s, x, y); }

Method 1.1 中间的*的个数和实在尺寸有关

 /// <summary> /// 隐藏敏感信息 /// </summary> /// <param name="info">信息实体</param> /// <param name="left">左边保留的字符数</param> /// <param name="right">右边保留的字符数</param> /// <param name="basedOnLeft">当长度异常时,是否显示左边 /// <code>true</code>显示左边,<code>false</code>显示右边 /// </param> /// <returns></returns> public static string HideSensitiveInfo(string info, int left, int right, bool basedOnLeft=true) { if (String.IsNullOrEmpty { return ""; } StringBuilder sbText = new StringBuilder(); int hiddenCharCount = info.Length - left - right; if (hiddenCharCount > 0) { string prefix = info.Substring, suffix = info.Substring(info.Length - right); sbText.Append; for (int i = 0; i < hiddenCharCount; i++) { sbText.Append; } sbText.Append; } else { if (basedOnLeft) { if (info.Length > left && left > 0) { sbText.Append(info.Substring + "****"); } else { sbText.Append(info.Substring + "****"); } } else { if (info.Length > right && right > 0) { sbText.Append("****" + info.Substring(info.Length - right)); } else { sbText.Append("****" + info.Substring(info.Length - 1)); } } } return sbText.ToString(); }

利用皮肤之后如图:

为第三方Dll制作Package

  1. 新建lib文件夹
  2. 将须要打包的dll放到lib文件夹下。放到lib文件夹下的目标是在使用Nuget加多援引后dll能够自行地丰裕到reference中
  3. 在DOS Console大校目录跳转到lib文件夹所在的目录,推行命令 Nuget Spec xxx.dll
  4. 上一步的下令会调换三个nuspec文件, 必要手动编辑那一个文件,制定PackageID, Version等消息
  5. 执行 Nuget Pack xxx.dll.nuspec即可
  6. 执行 Nuget Push [PackageID] -s [NugetServerUrl] [ApiKey]推送到Nuget Server了

那之中你也足以将广大脾性通过get、set方法公布出来;

图片 13

记得在Nuget Server搭建局地讲的怎么确认nuget官方源是或不是已增添吗? 你已经了然怎么加多大家相濡相呴的Nuget Server源了呢。增加好源之后, 只要把我们Nuget Package放到Server根目录的Packages的公文夹下,那几个Package就足以被大家运用了

在大家的门类里, 有二种dll我们须要接纳Nuget来进展版本管理。

本文由mg4155com发布于mg4155线路检测手机版,转载请注明出处:邮箱等趁机音讯,自定义进程条

关键词:

上一篇:说说动态内部存款和储蓄器分配,让思绪更清晰

下一篇:微信支付种类,小编有门槛与你大饱眼福