Почему я не могу декомпилировать методы DataRowExtensions с помощью .NET Reflector? - PullRequest
1 голос
/ 19 мая 2011

Когда я загружаю

C: \ Program Files (x86) \ Справочные сборки \ Microsoft \ Framework.NETFramework \ v4.0 \ System.Data.DataSetExtensions.dll

в .NET Reflector (скоро будет заменен на ILSpy) и откройте System.Data.DataRowExtensions, когда я смотрю на метод Field<T>(DataRow,DataColumn):T, исходный код C # просто:

public static T Field<T>(this DataRow row, DataColumn column)
{
}

Я ожидал увидеть хотя бы одну строку кода в методе, например:

return (T)row[column];

Почему метод выглядит пустым, как в первом примере кода?

Ответы [ 2 ]

1 голос
/ 19 мая 2011

Сборки в C:\Program Files\Reference Assemblies предназначены только для «справки» и используются Visual Studio для поддержки многоцелевого таргетинга . Обычно они не содержат никаких деталей реализации, только члены.

Аналогично этому вопросу и этому .

Вам необходимо загрузить реальную сборку, чтобы увидеть реализацию. Обычно при отладке вы можете видеть, где находятся сборки, если вы не можете их найти.

1 голос
/ 19 мая 2011

Я вижу метод в обоих

  • C: \ Program Files \ Справочные сборки \ Microsoft \ Framework \ v3.5 \ System.Data.DataSetExtensions.dll
  • C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ System.Data.DataSetExtensions.dll

.

public static T Field<T>(this DataRow row, DataColumn column)
{
    DataSetUtil.CheckArgumentNull<DataRow>(row, "row");
    return UnboxT<T>.Unbox(row[column]);
}
...