更新:2011 年 4 月
为了使可移植类库中支持的类型在各种不同的平台上运行,在 .NET Framework 4 中对类型进行了一些更改。 仅当在可移植类库项目中工作时才会遇到这些更改。 这些更改纠正了不同类型版本间存在的不一致问题。 例如,在 Silverlight 中,System.Net.HttpWebRequest 类包含名为 SupportsCookieContainer 的属性,但在 .NET Framework 4 的 System.Net.HttpWebRequest 类中却不存在此属性。 对于可移植类库,向 .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 个成员。 有关更多信息,请参见 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:
成员 |
可移植类库的更改 |
Signature |
---|---|---|
SupportsCookieContainer 属性 |
新属性。 |
public bool SupportsCookieContainer { get; } |
AllowReadStreamBuffering 属性 |
新属性。 |
public bool AllowReadStreamBuffering { get; set; } |
System.Net.WebRequest
两个新方法已添加到 System.Net.WebRequest:
成员 |
可移植类库的更改 |
Signature |
---|---|---|
CreateHttp(Uri) 方法 |
新方法。 |
public HttpWebRequest CreateHttp(System.Uri requestUri) |
CreateHttp(String) 方法 |
新方法。 |
public HttpWebRequest CreateHttp(string requestUriString) |
System.Net.WebResponse
两个新成员已添加到 System.Net.WebResponse,并且一个方法已更改。
成员 |
可移植类库的更改 |
Signature |
---|---|---|
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 中更改了两个方法。
成员 |
可移植类库的更改 |
Signature |
---|---|---|
Dispose 方法 |
签名更改。 |
旧签名:void IDisposable.Dispose() 新签名:public void Dispose() |
Close 方法 |
签名更改。 |
旧签名:public abstract Close() 新签名:public virtual Close() |
System.Xml.XmlWriter
在 System.Xml.XmlWriter 中更改了两个方法。
成员 |
可移植类库的更改 |
Signature |
---|---|---|
Dispose 方法 |
签名更改。 |
旧签名:void IDisposable.Dispose() 新签名:public void Dispose() |
Close 方法 |
签名更改。 |
旧签名:public abstract Close() 新签名:public virtual Close() |
System.Xml.XmlResolver
在 System.Xml.XmlResolver 中更改了一个属性。
成员 |
可移植类库的更改 |
Signature |
---|---|---|
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 月 |
新增主题。 |
信息补充。 |