可攜式類別庫的 API 差異
更新:2011 年 4 月
為了讓 可攜式類別庫 中支援的型別能夠在不同的平台上運作,對 .NET Framework 4 中的型別做了一些變更。 只有當您在 可攜式類別庫 專案中工作時,才會遇到這些變更。 這些變更已修正不同型別版本之間的不一致。 例如在 Silverlight 中,System.Net.HttpWebRequest 類別包含名為 SupportsCookieContainer 的屬性,但是這個屬性並未存在於 .NET Framework 4 的 System.Net.HttpWebRequest 類別中。 在 可攜式類別庫 中,SupportsCookieContainer 屬性已加入至 .NET Framework,好讓這些型別一致。 但是,除非 .NET Framework 4 使用者在 可攜式類別庫 專案中工作,否則 SupportsCookieContainer 屬性無法提供給這些使用者使用。 本主題描述在 .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:
成員 |
可攜式類別庫的變更 |
簽章 |
---|---|---|
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 的行為變更
某些型別和成員在 可攜式類別庫 專案中使用時,其行為會有所差異。
型別的中繼資料
當您評估從 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 年 4 月 |
已加入有關行為變更的詳細資訊。 |
資訊加強。 |
2011 年 3 月 |
加入主題。 |
資訊加強。 |