我应该在 NETPortable 中引用哪个,找不到 GetMethods

Which should I reference in NETPortable , can't find GetMethods

我有一个便携式类库。

".NETPortable,Version=v4.5,Profile=Profile75"

代码

typeof(T).GetMethods()

有错误

cannot resolve symbol 'GetMethods'

我的project.json

{
  "supports": {},
  "dependencies": {

  },
  "frameworks": {
    ".NETPortable,Version=v4.5,Profile=Profile75": { },
    "net541": { },
    "dotnet5.4": {
      "dependencies": {
        "Microsoft.CSharp": "4.0.1-beta-23516",
        "System.Collections": "4.0.11-beta-23516",
        "System.Linq": "4.0.1-beta-23516",
        "System.Runtime": "4.0.21-beta-23516",
        "System.Threading": "4.0.11-beta-23516",
        "System.Reflection": "4.1.0-beta-23516",
        "System.Collections.Concurrent": "4.0.11-beta-23516"
      }
    }

  }
}

和 csproj 文件中的密钥 属性

  <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>    
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <TargetFrameworkProfile>Profile75</TargetFrameworkProfile>
    <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>

我不太了解那个特定的配置文件(用那个配置文件测试任何东西都会给我关于预定义类型不可用的大量错误),但我 知道反射现在分为 TypeTypeInfo

您可能想要

using 指令
using System.Reflection;

然后使用:

typeof(T).GetTypeInfo().DeclaredMethods

(使用 DeclaredMethods property。)请注意,只有 returns 方法 在给定的 class 中声明了 ,而不是继承的方法,这可能不是您需要的。

typeof(T).GetTypeInfo().GetMethods()

后者 声称 受 PCL 支持,但可能不是 - 根据我的经验,MSDN 中的版本信息变得越来越难以信任, DNX 品种增加了更多的复杂性。

下面的例子对我有用:

using System.Reflection;

namespace mynamespace {
  class MyClass() {
     void test() {
       var tMethods = typeof(DSRObject).DeclaringType.GetRuntimeMethods();
     }
  }
}