我应该在NETPortable中参考哪个,可以';找不到GetMethods

本文关键字:可以 GetMethods 找不到 NETPortable 参考 我应该 | 更新日期: 2023-09-27 18:25:15

我有一个可移植类库。

".NETPortable,版本=v4.5,配置文件=配置文件75"

代码

typeof(T).GetMethods()

错误

cannot resolve symbol 'GetMethods'

我的项目.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>

我应该在NETPortable中参考哪个,可以';找不到GetMethods

我对那个特定的概要文件了解不多(用那个概要文件测试任何东西都会在预定义类型不可用的情况下给我带来巨大错误),但我知道反射现在在TypeTypeInfo之间划分。

你可能想要的using指令

using System.Reflection;

然后使用:

typeof(T).GetTypeInfo().DeclaredMethods

(使用DeclaredMethods属性。)请注意,它只返回给定类中声明的方法,而不是继承的方法,这可能不是您所需要的。

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

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

下面的例子适用于我:

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