次の方法で共有


汎用性のあるクラス ライブラリでの API の相違点

更新 : 2011 年 4 月

汎用性のあるクラス ライブラリでサポートされている型を異なるプラットフォームで動作させるために、.NET Framework 4 の型が若干変更されています。 このような変更が関係するのは、汎用性のあるクラス ライブラリ プロジェクトで作業しているときだけです。 この変更により、型の異なるリリースの間にある不整合が修正されています。 たとえば、Silverlight の System.Net.HttpWebRequest クラスには SupportsCookieContainer という名前のプロパティがありますが、.NET Framework 4 の System.Net.HttpWebRequest クラスにはこのプロパティは存在しません。 汎用性のあるクラス ライブラリでは、型の整合性を確保するために、SupportsCookieContainer プロパティが .NET Framework に追加されました。 ただし、SupportsCookieContainer プロパティを .NET Framework 4 で使用できるのは、汎用性のあるクラス ライブラリ プロジェクトを使用している場合だけです。 このトピックでは、汎用性のあるクラス ライブラリ用に .NET Framework の型とメンバーに対して行われた変更と、ユーザーが認識する可能性のある動作の変更について説明します。

.NET Framework 4 の変更点

汎用性のあるクラス ライブラリ プロジェクトを使用するときは、.NET Framework 4 クラス ライブラリの型とメンバーが以下のように変更されます。

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

この型は .NET Framework に追加された型です。 Silverlight クラス ライブラリには既に存在していました。 52 個のメンバーがあります。 詳細については、Silverlight のドキュメントで System.ServiceModel.ClientBase<TChannel>.ChannelBase<T> のリファレンス トピックを参照してください。

System.ServiceModel.Channels.IHttpCookieContainerManager

この型は .NET Framework に追加された型です。 Silverlight クラス ライブラリには既に存在していました。 1 個のメンバーがあります。 詳細については、Silverlight のドキュメントで System.ServiceModel.Channels.IHttpCookieContainerManager のリファレンス トピックを参照してください。

System.Net.HttpWebRequest

System.Net.HttpWebRequest には 2 つの新しいプロパティが追加されています。

メンバー

ポータブル クラス ライブラリ用の変更

シグネチャ

SupportsCookieContainer プロパティ

新しいプロパティ。

public bool SupportsCookieContainer { get; }

AllowReadStreamBuffering プロパティ

新しいプロパティ。

public bool AllowReadStreamBuffering { get; set; }

System.Net.WebRequest

System.Net.WebRequest には次に示す 2 つの新しいメソッドが追加されています。

メンバー

ポータブル クラス ライブラリ用の変更

シグネチャ

CreateHttp(Uri) メソッド

新しいメソッド。

public HttpWebRequest CreateHttp(System.Uri requestUri)

CreateHttp(String) メソッド

新しいメソッド。

public HttpWebRequest CreateHttp(string requestUriString)

System.Net.WebResponse

System.Net.WebResponse では、2 つのメソッドが新しく追加され、1 つのメソッドが変更されました。

メンバー

ポータブル クラス ライブラリ用の変更

シグネチャ

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 では、2 つのメソッドが変更されました。

メンバー

ポータブル クラス ライブラリ用の変更

シグネチャ

Dispose メソッド

シグネチャの変更。

旧: void IDisposable.Dispose()

新: public void Dispose()

Close メソッド

シグネチャの変更。

旧: public abstract Close()

新: public virtual Close()

System.Xml.XmlWriter

System.Xml.XmlWriter では、2 つのメソッドが変更されました。

メンバー

ポータブル クラス ライブラリ用の変更

シグネチャ

Dispose メソッド

シグネチャの変更。

旧: void IDisposable.Dispose()

新: public void Dispose()

Close メソッド

シグネチャの変更。

旧: public abstract Close()

新: public virtual Close()

System.Xml.XmlResolver

System.Xml.XmlResolver では、1 つのプロパティが変更されました。

メンバー

ポータブル クラス ライブラリ用の変更

シグネチャ

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 の型 MethodInfoFieldInfoPropertyInfoEventInfoMemberInfoMethodBaseConstructorInfo、および ParameterInfo を使用するときは、コードを確認し、場合によっては変更する必要があります。

ジェネリック型の式ツリー

Windows Phone 7 では、ジェネリック型のローカル変数を参照する式ツリーを作成すると、VerificationException 例外がスローされます。

オープン ジェネリック型でのリフレクション

Windows Phone 7 では、クローズ ジェネリック型でリフレクションがサポートされますが、オープン ジェネリック型ではほとんどのリフレクション操作がサポートされません。 オープン ジェネリック型では、Windows Phone 7 の次のリフレクション操作のみサポートされます。

  • GetType メソッドまたは GetMethods メソッドを呼び出してオープン ジェネリック型またはジェネリック メソッドを取得する。

  • MakeGenericType メソッドまたは MakeGenericMethod メソッドを呼び出してオープン ジェネリック型またはジェネリック メソッドからジェネリック型またはジェネリック メソッドを作成する。

その他のリフレクション操作をオープン ジェネリック型で実行すると、NotSupportedException 例外がスローされます。

参照

その他の技術情報

汎用性のあるクラス ライブラリ

履歴の変更

日付

履歴

理由

2011 年 4 月

動作の変更に関するより詳しい情報を追加

情報の拡充

2011 年 3 月

トピックを追加

情報の拡充