typeof(System.Net.WebUtility).GetMethod为.NetStandard2返回`null`(与.NetFramework4.6.1一起正常工作)

时间:2017-09-06 17:13:48

标签: c# .net asp.net-core .net-core

如何在 .NetStandard2 中编写以下代码,以便它不会返回null

  

.NetFramework4.6.1

可以正常使用
MethodInfo method = typeof(System.Net.WebUtility).GetMethod(nameof(System.Net.WebUtility.UrlEncode),
        BindingFlags.Static | BindingFlags.NonPublic,
        null,
        new[]
        {
            typeof(byte[]),
            typeof(int),
            typeof(int)
        },
        null);

正在寻找this line确切但是 .NetFramework4.7 ,并且CoreFx中也找不到System.Net.WebUtility来源。

1 个答案:

答案 0 :(得分:2)

代码实际上是要求System.Net.WebUtility中名为UrlEncode

命名的方法
  1. static
  2. 可以是非public(如您的链接所示,实际上是private
  3. 接受3个参数:byte[]intint
  4. But .NET Standard 2.0 doesn't define any such method。因此,符合.NET标准2.0的实现 - 包括.NET Core 2.0 - 可以不自由地实现它。而这正是corefx所做的。 System.Net.WebUtilities的corefx实现中没有这样的方法:https://github.com/dotnet/corefx/blob/master/src/System.Runtime.Extensions/src/System/Net/WebUtility.cs

    您是否考虑过使用UrlEncodeToBytes(byte[], int, int)?它存在于.NET Standard 2.0中,应该在.NET Framework 4.6.1和.NET Core 2.0中得到支持。