2017-07-09
使用 HttpClient 的时候忽略目标请求站点的证书错误

我们有个 API 站点使用了自签名的证书做 https,如果在浏览器中访问这个站点必然会弹出证书警告,忽略就好。当使用 HttpClient 向这个站点发起请求的时候,也必然会抛异常,那如何才能让 HttpClient 也忽略证书问题呢?在经典 .NET Framework 中,可以这么做:

1
2
// using System.Net
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
阅读此文

2017-07-02
.NET Framework deployment guide for developers

发现一篇有关 .NET Framework 部署的官方文档,包含很多有用的信息,比如

  • 各个版本的 .NET Framework 的在线/离线安装包下载。
  • 如何侦测目标系统上已有的 .NET Framework 版本包括语言包。
  • 如何卸载 .NET Framework。
阅读此文

2017-03-11
使数值类型根据正负数分别格式化为不同形式的方法

请看下面的例子,一目了然:

1
2
3
4
5
6
7
8
9
static void Main(string[] args)
{
float[] fs = { 1234.5678F, -8765.4321F };

foreach (float f in fs)
{
Console.WriteLine(f.ToString("#,##0.00;(#,##0.00)"));
}
}

输出为:

1
2
1,234.57
(8,765.43)
阅读此文

2016-10-09
让老C#代码支持可选参数的方法

C#是从 C# 4.0(随着 .NET Framework 4和VS 2010)开始支持可选参数的。具体来说,就是可以用C#写如下的代码:

1
2
3
4
public int Add(int a, int b = 5)
{
return a + b;
}

在这之前,通常是使用方法重载来达到相同目的:

1
2
3
4
5
6
7
8
9
public int Add(int a, int b)
{
return a + b;
}

public int Add (int a)
{
return Add(a, 5);
}

实际上,我们完全可以通过2个Attribute来达到可选参数的目的。这2个Attribute存在于System.Runtime.InteropServices命名空间,分别为:

  • OptionalAttribute
  • DefaultParameterValueAttribute

代码看起来是这样:

1
2
3
4
public int Add(int a, [Optional][DefaultParameterValue(5)]int b)
{
return a + b;
}

这2个Attribute自 .NET Framework 1.1时代就有了,惭愧我现在才知道……

阅读此文