Который я должен ссылаться в NETPortable, не могу найти GetMethods

У меня есть портативная библиотека.

".NETPortable, Version = v4.5, профиль =Profile75"

Код

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>

2 ответа

Решение

Я не очень много знаю об этом конкретном профиле (и тестирование чего-либо с этим профилем приводит к огромным ошибкам в связи с отсутствием предопределенных типов), но я знаю, что отражение теперь разделено между Type а также TypeInfo,

Скорее всего, вы хотите 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();
     }
  }
}
Другие вопросы по тегам