使用代碼我正在轉換爲Mono中的可移植類庫,我遇到了使用System.IO.WebExceptionStatus
來切換做出響應後的操作的部分。我的問題只是作爲PCL支持的枚舉的一部分。Enum PCL不支持是否有解決方法?
例如ConnectionClosed
不在PCL構建的枚舉中。
所以真的有兩個問題:
1)爲什麼只支持Enum的一部分(我找不到爲什麼在任何地方)?
2)是否有PCL的解決方法,允許我有近似的行爲?
使用代碼我正在轉換爲Mono中的可移植類庫,我遇到了使用System.IO.WebExceptionStatus
來切換做出響應後的操作的部分。我的問題只是作爲PCL支持的枚舉的一部分。Enum PCL不支持是否有解決方法?
例如ConnectionClosed
不在PCL構建的枚舉中。
所以真的有兩個問題:
1)爲什麼只支持Enum的一部分(我找不到爲什麼在任何地方)?
2)是否有PCL的解決方法,允許我有近似的行爲?
1)基於the documentation,Windows Store應用程序配置文件僅支持一組有限的項目。在這種情況下,PCL只能支持該組項目。
2)如果您的應用程序確實需要處理其他項目,請不要將這段代碼放在PCL中。
如果你的意思是 - System.Net.WebException 「引發WebException類」
.NET Framework 4.5,4,3.5,3.0,2.0,1.1,1.0 | 客戶端配置文件:4,3.5 SP1`` 便攜式類庫 .NET的Windows Store應用程序支持:Windows 8中
其有人說一百萬次,但其PCL只是之間的共同點或十字路口的包裝平臺實現。
,我想這一定是因爲該[__DynamicallyInvokable]
屬性
類似情況如果是枚舉,可以將其轉換爲int並檢查其值。
// Type: System.Net.WebExceptionStatus
// Assembly: System, Version=4.0.0.0, Culture=neutral,
namespace System.Net
{
public enum WebExceptionStatus
{
Success = 0,
ConnectFailure = 2,
SendFailure = 4,
RequestCanceled = 6,
Pending = 13,
UnknownError = 16,
MessageLengthLimitExceeded = 17,
}
}
try
{
//Do something that can throw WebException ?
}
catch (WebException e)
{
if((int)e.Status == 0)
Debug.WriteLine("Success");
}
var test = new Class1.Test();
test.Run();
或嘗試已知的類型?
try
{
//Do something that can throw WebException ?
}
catch (WebException e)
{
if (e.Status == (WebExceptionStatus.Success) ||
e.Status == (WebExceptionStatus.ConnectFailure) ||
e.Status == (WebExceptionStatus.RequestCanceled) ||
e.Status == (WebExceptionStatus.Pending) ||
e.Status == (WebExceptionStatus.UnknownError) ||
e.Status == (WebExceptionStatus.MessageLengthLimitExceeded))
Debug.WriteLine("Ok");
else
Debug.WriteLine("Its another WebException");
}
1)我明白了,但爲什麼這個子集?我發現了其他限制的文檔,但不是那個枚舉。 2)所以完全減少可能結果數量的一半...... – cdbitesky
微軟從來沒有文檔說明爲什麼一個特定的配置文件(如CF,Silverlight,Windows應用商店,XBox)的API被刪除。我能想到的唯一假設是,對於Windows應用商店應用程序,基礎CLR運行時確保只有在發生Web異常集時才通知應用程序。 –