Отличия API в библиотеке переносных классов

Чтобы типы, поддерживаемые в Переносимая библиотека классов, работали в других платформах, в типы в платформе .NET Framework 4 были внесены некоторые изменения. Эти изменения будут встречаться только при работе в проекте Переносимая библиотека классов. Они устранили несогласованность разных выпусков типов. Например, в Silverlight класс System.Net.HttpWebRequest содержит свойство с именем SupportsCookieContainer, но это свойство отсутствовало в классе System.Net.HttpWebRequest в платформе .NET Framework 4. Для Переносимая библиотека классов в платформу .NET Framework было добавлено свойство SupportsCookieContainer для обеспечения совместимости типов. Однако, если пользователи .NET Framework 4 не работают в проекте Переносимая библиотека классов, свойство SupportsCookieContainer им недоступно. В этом разделе описываются изменения, которые были внесены в типы и члены в платформе .NET Framework для Переносимая библиотека классов, а также изменения в поведении, которые могут встретиться.

Изменения версии .NET Framework 4

При работе в проекте Переносимая библиотека классов в библиотеке классов платформы .NET Framework 4 встретятся следующие измененные типы и члены.

System.ServiceModel.ClientBase<TChannel>.ChannelBase<T>

Этот тип был добавлен в платформу .NET Framework. Он уже существовал в библиотеке классов Silverlight. Он содержит 52 члена. Дополнительные сведения см. в справочном разделе, посвященном классу System.ServiceModel.ClientBase<TChannel>.ChannelBase<T>, в документации по Silverlight.

System.ServiceModel.Channels.IHttpCookieContainerManager

Этот тип был добавлен в платформу .NET Framework. Он уже существовал в библиотеке классов Silverlight. Он содержит 1 член. Дополнительные сведения см. в справочном разделе, посвященном интерфейсу System.ServiceModel.Channels.IHttpCookieContainerManager, в документации по Silverlight.

System.Net.HttpWebRequest

В классе System.Net.HttpWebRequest добавлено два новых свойства.

Элемент

Изменения переносимой библиотеки классов

Сигнатура

Свойство SupportsCookieContainer

Новое свойство.

public bool SupportsCookieContainer { get; }

Свойство AllowReadStreamBuffering

Новое свойство.

public bool AllowReadStreamBuffering { get; set; }

System.Net.WebRequest

В классе System.Net.WebRequest добавлено два новых метода.

Элемент

Изменения переносимой библиотеки классов

Сигнатура

Метод CreateHttp(Uri)

Новый метод.

public HttpWebRequest CreateHttp(System.Uri requestUri)

Метод CreateHttp(String)

Новый метод.

public HttpWebRequest CreateHttp(string requestUriString)

System.Net.WebResponse

В классе System.Net.WebResponse добавлено два новых члена и изменен один метод.

Элемент

Изменения переносимой библиотеки классов

Сигнатура

Свойство SupportsHeaders

Новое свойство.

public bool SupportsHeaders { get; }

Метод Dispose(Boolean)

Новый метод.

protected void Dispose(bool disposing)

Метод Dispose

Изменение сигнатуры.

Старая: void IDisposable.Dispose()

Новая: public void Dispose()

System.Xml.XmlReader

В классе System.Xml.XmlReader изменено два метода.

Элемент

Изменения переносимой библиотеки классов

Сигнатура

Метод Dispose

Изменение сигнатуры.

Старая: void IDisposable.Dispose()

Новая: public void Dispose()

Метод Close

Изменение сигнатуры.

Старая: public abstract Close()

Новая: public virtual Close()

System.Xml.XmlWriter

В классе System.Xml.XmlWriter изменено два метода.

Элемент

Изменения переносимой библиотеки классов

Сигнатура

Метод Dispose

Изменение сигнатуры.

Старая: void IDisposable.Dispose()

Новая: public void Dispose()

Метод Close

Изменение сигнатуры.

Старая: public abstract Close()

Новая: public virtual Close()

System.Xml.XmlResolver

В классе System.Xml.XmlResolver изменено одно свойство.

Элемент

Изменения переносимой библиотеки классов

Сигнатура

Свойство Credentials

Изменение сигнатуры.

Старая: public abstract ICredentials Credentials { set; }

Новая: public virtual ICredentials Credentials { set; }

Изменения в поведении в API

Некоторые типы и члены ведут себя по-другому, когда используются в проекте Переносимая библиотека классов.

Метаданные из Type

При оценке метаданных, возвращаемых методами и свойствами System.Type, оператор равенства может возвращать разные результаты в разных платформах. В платформе .NET Compact Framework при каждом последующем вызове метода Type.GetMethod возвращается новый экземпляр System.Reflection.MethodInfo. Поэтому возвращаемые значения никогда не оцениваются как равные. Однако в платформе .NET Framework 4 при вызове метода GetMethod с одинаковыми параметрами возвращается один и тот же экземпляр MethodInfo. Необходимо просмотреть и, возможно, изменить код при работе со следующими типами System.Reflection: MethodInfo, FieldInfo, PropertyInfo, EventInfo, MemberInfo, MethodBase, ConstructorInfo и ParameterInfo.

Дерево выражения с универсальными типами

В ОС Windows Phone 7 при создании дерева выражения, которое ссылается на локальную переменную универсального типа, возникает исключение VerificationException.

Отражение на открытые универсальные типы

В ОС Windows Phone 7 поддерживается отражение на закрытые универсальные типы; однако для открытых универсальных типов большинство операций отражения не поддерживается. Для открытых универсальных типов в ОС Windows Phone 7 поддерживаются только перечисленные ниже операции отражения.

  • Извлечение открытого универсального типа или метода путем вызова метода GetType или GetMethods.

  • Создание универсального типа или метода из открытого универсального типа или метода путем вызова метода MakeGenericType или MakeGenericMethod.

Для всех других операций отражения на открытые универсальные типы возникает исключение NotSupportedException.

См. также

Другие ресурсы

Библиотеки переносных классов

Журнал изменений

Дата

Журнал

Причина

Апрель 2011

Добавлены дополнительные сведения об изменениях поведения.

Улучшение информации.

Март 2011

Добавлен раздел.

Улучшение информации.