目录

介绍

背景

使用代码

ContextMgr代码示例

CommonHelpers API

扩展方法

帮助函数和属性


介绍

JHelpers是一个.NET Standard 2.0库组件,可以在任何支持的操作系统上与任何.NET项目(无论是Core还是Standard)一起使用。它是一个通常有用的方法和功能库,可以节省开发人员编写代码来完成这些平凡的任务——或者更糟糕的是,有多个版本的方法可以在多个地方编写相同的东西。出于这个原因,JHelpers在我的JDAC和JLogger NuGet包中使用。

通过搜索NuGet找到该组件Jeff.Jones.JHelpers,或直接访问:https://www.nuget.org/packages/Jeff.Jones.JHelpers/。

背景

我发现,随着时间的推移,正如许多开发人员所做的那样,我在多个项目中使用了某些辅助函数和简单的功能。因此,我将它们(从零开始重写,以便不使用为他人编写和拥有的代码)合并到库中。然后我通过在另外两个NuGet项目中使用这个库来“吃掉我自己的狗食”(可以这么说)。

CommonHelpers是一个有static方法和扩展的static类。

ContextMgr是一个线程安全的单例,可用于将数据存储在应用程序中的任何位置、任何线程访问的单个位置。一个典型的用途是存储设置和其他运行时值,因此它们的源(文件,数据库等)只需要读取一次。任何可以定义为唯一String 名称和任何类型的值或引用类型的东西都可以保留在那里。值作为String键名称(必须是唯一的)和任何值或引用类型添加,作为动态类型加框。

ContextMgr没有初始化,并且作为单例,不使用“new”来创建。实际实例是在代码中的第一个引用上动态创建的。

使用代码

ContextMgr代码示例

Boolean retVal = false;
ContextMgr.Instance.ContextValues.Add("Computer Name", Environment.MachineName);
ContextMgr.Instance.ContextValues.Add("Startup Time", DateTime.Now);
IPAddress[] ips = Dns.GetHostAddresses("BubbaComputer");
ContextMgr.Instance.ContextValues.Add("IP Addresses", ips);
dynamic machineName = "";
retVal = ContextMgr.Instance.ContextValues.TryGetValue("Computer Name", out machineName);
dynamic startupTime = "";
retVal = ContextMgr.Instance.ContextValues.TryGetValue("Startup Time", out startupTime);
dynamic hostAddresses = null;
retVal = ContextMgr.Instance.ContextValues.TryGetValue("IP Addresses", out hostAddresses);// In your application’s shutdown code, I recommend adding this line so the
// ContextMgr disposes of its resources without waiting on the .NET garbage collector.ContextMgr.Instance.Dispose();

CommonHelpers API

这是一个包含许多有用static方法的static类。

扩展方法

String GetFullExceptionMessage(this Exception ex2Examine, Boolean getDataCollection, Boolean getStackTrace)

此Exception对象扩展从父异常和堆栈中的任何异常(以及可选的数据集合)返回错误消息。该Exception.Data集合用于存储通常记录运行时值或其他重要数据以进行调试的名称——值对。

Boolean Contains(this String source, String toCheck, StringComparison strComp)

此String对象扩展允许string比较类型以string进行检查。如果toCheck string在string源代码中,则扩展方法返回true,否则返回false。

Int32 ContainsHowMany(this String source, String toCheck, Boolean ignoreCase = false)

此String对象扩展获取给定string在另一个string内发生的次数。扩展方法返回Count的0到n发生。

Boolean ConvertToBoolean(this String valueToExamine, out Boolean isBoolean)

此String对象扩展将string(假设为可转换的格式)转换为布尔值。识别为true(不区分大小写):true, on, yes, up, ok, good, 1, -1。识别为false(不区分大小写): false, off, no, down, not ok, bad, 0。如果转换失败,则返回false。检查isBoolean值以查看转换是否检测到布尔值。如果是false,则不转换该值。

Boolean IsBoolean(this String valueToExamine)

此String对象扩展测试一个 string,假定其为可以转换的格式,为一个布尔值。识别为true(不区分大小写):true, on, yes, up, ok, good, start, 1, -1。识别为false(不区分大小写): false, off, no, down, not ok, bad, stop, 0。如果转换失败,则返回false。否则,返回true。

Boolean IsOnlyDigits(this String testString, Boolean includePeriod = false)

此String对象扩展检查所有字符是否为数字。转换函数测试到数字可能会将字母转换为十六进制值。如果将唯一的一个期间视为一个数字,则includePeriod设置为true,以便正确处理十进制数string。

String GetOnlyDigits(this String testString, Boolean includePeriod = false)

此String对象扩展获取string中的所有数字,并忽略任何非数字。如果includePeriod是true,那么string结果中将包含第一个字符。

String GetOnlyLetters(this String testString, Boolean includeSpace = false)

此String对象扩展获取string中的所有字母并忽略任何非字母。但是,如果includeSpace是true,则找到的任何空格都包含在返回值中。

String GetOnlyLettersAndDigits(this String testString, BooleanincludePeriodAndSpace = false)

这个String对象扩展获得string中的所有字母和数字,而忽略一切,但当includePeriodAndSpace是true时,句点和空格除外。

Boolean IsOnlyLetters(this String testString, Boolean includeSpace = false)

此String对象扩展检查所有字符是否为字母。如果includeSpace是true,则接受空格,就好像它们是字母一样。

Boolean IsOnlyLettersAndOrDigits(this String testString, Boolean includePeriodAndSpace = false)

此String对象扩展检查所有字符仅为字母和数字。如果includePeriodAndSpace是true,那么所有句号和空格都被视为字母。

Boolean IsEmailFormat(this String email)

此String对象扩展检查string以查看它是否是有效的电子邮件格式。它不会检查它是否是有效的、可用的电子邮件。

DateTime GetDateTime(this String dateString, DateTime dateDefault)

此String对象扩展名转换string为date或返回默认时间值。

Decimal GetDecimal(this String numberString, Decimal decimalDefault)

此String对象扩展名将转换string为十进制值,或返回默认值。

Int32 GetInt32(this String numberString, Int32 integerDefault)

此String对象扩展转换string为Int32值,或返回默认值。

Int64 GetInt64(this String numberString, Int64 integerDefault)

此String对象扩展转换string为Int64值,或返回默认值。

Object GetDefaultValue(this Type t)

通用扩展方法,返回类型的默认值(如果存在)。这在default<T>可能不起作用的泛型实例中很有用。

帮助函数和属性

枚举

DistanceUnitsOfMeasureEnumUnassignedMilesKilometersFeetMeters

这与地理位置一起使用以指定距离的测量单位。

AddressGeoDataDouble Latitude1Double Longitude1Double Altitude1Double Latitude2Double Longitude2Double Altitude2Double LinearDistance (value is calculated, read-only)DistanceUnitsOfMeasureEnum UnitsOfMeasure

类构造函数

AddressGeoData(Double pLatitude1,Double pLongitude1,Double pAltitude1,Double pLatitude2,Double pLongitude2,Double pAltitude2,DistanceUnitsOfMeasureEnum pUnitsOfMeasure)

分类方法

void SetUnitsOfMeasure(DistanceUnitsOfMeasureEnum lngUnitsOfMeasure)

指定在此类实例化期间使用的测量单位。

void SetLinearDistance(Double dDistance)

此类用于存储指定纬度,经度和海拔高度的两个地理位置。测量单位确定与LinearDistance值对应的单位。如果不知道或不需要,海拔高度可为0。

String RowDelimiter (Get only)

此值可应用于常量的值。RowDelimiter是与电传打字机和其他设备中使用的非可打印ASCII字符相同,用于表示新行,并且不太可能在string数据中看到。

String ColumnDelimiter (Get only)

此值可应用于常量的值。ColumnDelimiter是与电传打字机和其他设备中使用的非可打印ASCII字符相同,用于表示新列,并且不太可能在string数据中看到。

String TableDelimiter (Get only)

此值可应用于常量的值。TableDelimiter是与电传打字机和其他设备中使用的非可打印ASCII字符相同,用于指示新的数据表,并且不太可能在string数据中看到。

String FullComputerName (Get only)

获取DNS将在任何域中识别的完整计算机名称。

String GetDNSName(String pComputerName = "")

获取给定计算机名称的DNS主机条目表名称。传入任何计算机名称。如果留空或null将使用当前计算机名称。

String CurDir (Get/Set)

获取或设置当前工作目录的标准路径。对于服务,当前目录通过常规方式显示Windows System32目录,因为该服务在位于那里的EXE下运行。此属性通过使用一个方法调用在IDE中运行,另一个用于运行已编译的方法来解决这个问题。

Boolean AmIRunningInTheIDE (Get only)

如果此项目或任何将此组件作为已编译代码调用的项目在IDE下运行,则此方法将返回true。如果没有使用IDE,则此方法返回false。

Boolean IsInDomain()

如果运行代码的计算机是一个域,则返回true。如果不是则返回False。

String GetComputerDomainName()

返回计算机加入的域。注意:如果用户以本地帐户登录,则仍会返回计算机域。如果已加入,则返回带有域名的String;如果不是,则返回空String。

String GetFullComputerDomainName()

返回完整的域名而不是别名。

Boolean IsDaylightSavingsTime(DateTime dtmToTest)

如果提供的datetime在夏令时期间内,则为True。

Boolean IsDaylightSavingsTime()

如果它是目前的夏令时,则返回True。

String CurrentTimeZoneDaylightName (Get only)

夏令时的当前时区名称。

String CurrentTimeZoneName (Get only)

无论夏令时如何,当前时区的名称。

Int32 Asc(String strChar)

与VB6 ASC函数相同——给它一个字符,返回ASCIII十进制数。

String Hex(Int32 lngValue)

与VB6函数相同。将32位整数转换为String hex值。

Int32 GetCurrentCPUUsage()

获取当前的%处理器时间。

Int32 AvailableRAMinMB()

返回可用的RAM MB。

PingReply Ping(String strHostName, Int32 lngTimeout)

同步ping指定的服务器。返回指示操作是否成功的PingReply实例。

void GetLinearDistances(ref List<AddressGeoData> objAddressList)

此函数使用Haversine公式计算两组纬度和经度之间的线性距离,并根据纬度调整地球的半径。使用Haversine代替Vincenty的公式,以保持计算更简单,减少处理器密集度。此函数接受地址数据实例列表并处理它们,更新List线性距离属性中的各个类实例。

Double GetLinearDistance(double Latitude1,double Longitude1,double Altitude1,double Latitude2,double Longitude2,double Altitude2,DistanceUnitsOfMeasureEnum lngUnitsOfMeasure)

此函数使用Haversine公式计算两组纬度和经度之间的线性距离,并根据纬度调整地球的半径。使用Haversine代替Vincenty的公式,以保持计算更简单,减少处理器密集度。此重载允许调用者指定返回值所需的测量单位。

Double GetLinearDistance(Double Latitude1,Double Longitude1,Double Altitude1,Double Latitude2,Double Longitude2,Double Altitude2,Boolean UseMiles)

此函数使用Haversine公式计算两组纬度和经度之间的线性距离,并根据纬度调整地球的半径。使用Haversine代替Vincenty的公式,以保持计算更简单,减少处理器密集度。此重载允许用户在英里和公里(UseMiles参数)之间进行选择:

Double GetLinearDistance(Double Latitude1,Double Longitude1,Double Latitude2,Double Longitude2,DistanceUnitsOfMeasureEnum UnitsOfMeasure)

此函数使用Haversine公式计算两组纬度和经度之间的线性距离,但不提供高度(所有计算假定在海平面上的地球曲线上是线性的),并根据纬度调整地球半径。使用Haversine代替Vincenty的公式,以保持计算更简单,减少处理器密集度。此重载允许用户选择什么测量单位。

Double RadianToDegree(Double Coordinate)

将弧度转换为度数。

Double CelciusToFahrenheit(Double DegC)

将摄氏温度转换为华氏温度。

Double FahrenheitToCelsius(Double DegF)

将华氏温度转换为摄氏温度。

String StringToBase64(String String2Convert)

转换String为Base64。

String Base64ToString(String ByteString64)

转换Base64String为String。

List<ManagementObject> GetNetworkPrinters()

获取使用List对象中每个打印机一个ManagementObject实例的网络打印机列表。

void SetIntBitValue(ref Int32 intValue, Int32 bitPlaceValue, Boolean setBitOn)

Helper方法设置Int开/关的位值。

Boolean GetIntBitValue(Int32 intValue, Int32 bitPlaceValue)

Helper方法获取一个Int位值的状态。

String GetStackInfo()

这将在String中获取模块,函数,行号和列号信息。在记录和创建异常以准确定义发生的位置时,这非常有用。

String GetStackInfo(Exception ex)

这将根据异常获取String中的模块,函数,行号和列号信息。在记录和创建异常以准确定义发生的位置时,这非常有用。

String GetFullDateTimeStampForFileName(DateTime dtmDate)

这将返回一个文件名的datetime格式一致的String。

Boolean IsFileText(out Encoding lngEncoding, String strFileName, Int32 lngNumCharactersToRead)

检测文件是否为文本并检测编码。

Int32 GetTotalHDDFreeSpace(String pDriveName)

返回可用磁盘空间的MB。

Int32 GetTotalHDDSize(String pDriveName)

返回总空间的MB。

Int32 GetMinPasswordLength()

返回域中的最小密码长度(如果存在)。如果不存在域,则返回-1。

Boolean IsIPAddress(String pValue, out IPAddress pIPValue)

检查一个string是IPv4还是IPv6地址,并返回IPAddress对象作为out参数。

String AssemblyTitle (Get only)

.NET程序集的标题。

String AssemblyVersion (Get only)

.NET程序集的版本。

String AssemblyDescription (Get only)

.NET程序集的说明。

String AssemblyProduct (Get only)

.NET程序集的产品说明。

String AssemblyCopyright (Get only)

.NET程序集使用的版权string。

String AssemblyCompany (Get only)

拥有.NET程序集的公司。

Boolean WriteToLog(String logFileName, String mainMessage, String secondMessage)

执行日志写入的方法,其中文件以制表符分隔并具有列标题行。

JHelpers——一个善良忠实的仆人相关推荐

  1. 一个搜狗拼音忠实用户的闲扯

    我使用搜狗拼音输入法应该是从06年底1.0版本开始的,到现在有差不多4年时间了.每次装完系统后第一个安装的软件就是它,因为需要上网搜索一些中文关键字,而xp自带的输入法就是一个悲剧.我中文打字是很慢的 ...

  2. 约翰-克莱默宣言——一个“善良”屠夫的自白

    010年7月23日(周五) 晚上22:50分, 北京草庐 约翰-克莱默(John Krammer)是电影<电锯惊魂>(Saw)电影中著名的杀人狂- Jig Saw(电锯)的真名,虽然< ...

  3. 约翰-克莱默宣言-一个“善良”屠夫的自白

    2010年7月23日(周五) 晚上22:50分,  北京草庐 约翰-克莱默(John Krammer)是电影<电锯惊魂>(Saw)电影中著名的杀人狂- Jig Saw(电锯)的真名,虽然& ...

  4. 做一个有姿态的女孩子

    做一个自律的女孩子 做一个爱自己的女孩子 做一个擅长等待的女孩子 做一个有姿态的女孩子 做一个善良的女孩子 做一个温柔的女孩子 做一个漂亮的女孩子 做一个喜欢运动的女孩子 做一个自控的女孩子 做一个高 ...

  5. NYOJ 674 善良的国王(树形背包DP)

    善良的国王 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 传说中有一个善良的国王Good,他为了不劳民伤财,每当建造一个城镇的时候都只用一条路去连接,这样就可以省很多的 ...

  6. 一个出轨带来的家庭悲剧

    谨以此文供情人节的情人们,已经结婚的.未婚的.已恋爱的.未恋爱的,大家都生活幸福. 秋秋是我在厂院儿里的好朋友,善良漂亮,在七八岁之前我们一直是只隔了一墙的邻居,我们从小一起长大,我经常去她家,她妈妈 ...

  7. 你要去做一个大人,不要回头,不要难过

    以后要为我的每一篇博客最后加上一句话,加过的话后面会打一个✔,相信总有一天会把所有的句子用完的. 你要去做一个大人,不要回头,不要难过. "总是要走一些弯路,才能知道正确的路是什么.开发是这 ...

  8. 我,一个靠GitHub打赏谋生的码农,年入十万美元

    | 作者:Caleb Porzio | 转载自:机器之心 | 编辑:王玥敏 | 设计:刘颖洁 如果提到靠打赏生活的人,我们首先想到的会是主播.但现实情况是,码农也可以.这位活成主播的码农名叫 Cale ...

  9. 一个靠 GitHub 打赏的码农,年入十万美元!

    点击"开发者技术前线",选择"星标" 在看|星标|留言,  真爱 转自:机器之心 如果提到靠打赏生活的人,我们首先想到的会是主播.但现实情况是,码农也可以.这位 ...

最新文章

  1. [ python ] 类的组合
  2. 【转】G40-70、G50-70联想小新笔记本SR1000随机Linux改Windows 7系统操作指导
  3. 将多个PDF文件合并/转换为一个PDF
  4. tcp/udp socket编程异同
  5. [云炬商业计划书阅读分享] 珠江啤酒公司企业文化调查
  6. get/post 接口调用
  7. django 返回ajax html,Django 前台通过json 取出后台数据
  8. ACM - 第6章 数据结构基础(2)
  9. Mysql 行前自动排序_mysql 取得行号后再排序
  10. vue+element-ui 实现table单元格点击编辑,并且按上下左右键单元格之间切换
  11. [转载] python bp神经网络 mnist_Python利用全连接神经网络求解MNIST问题详解
  12. 常用的MATLAB建模工具箱
  13. 华为交换机路由器登陆密码详细操作
  14. Hola Studio最佳实践之多边形刚体的编辑
  15. 保姆级零基础 C 语言学习路线,万字总结!
  16. HTML css实现翻页效果,一个纯CSS3实现的酷炫翻书效果
  17. c语言转义字符详解,C语言转义字符和格式控制符参考
  18. 金蝶k3服务器物理内存过高,物理内存过高的解决办法
  19. Gallery中,取消惯性滑动,滑动一次只切换一个视图
  20. Java培训机构靠不靠谱?能不能学会?

热门文章

  1. 加载geojson面数据_地理数据可视化
  2. 设计灵感|音乐播放器App界面如何设计?
  3. 暗黑模式盛行,如何设计更好的深色UI ?暗黑模式盛行,如何设计更好的深色UI ?
  4. UI设计素材模板|音乐社交娱乐教育APP Makeapp Wireframe Kit
  5. python 浏览器自动化_Python利用splinter实现浏览器自动化操作方法
  6. Python爬虫项目---批量下载深圳证券信息
  7. Windows 软件安全---注入安全
  8. 遍历QListWidget的item
  9. Linux内核 eBPF基础:BCC (BPF Compiler Collection)
  10. 这些 Linux 技巧大大提高你的工作效率