2013-07-23 82 views
1

使用代碼我正在轉換爲Mono中的可移植類庫,我遇到了使用System.IO.WebExceptionStatus來切換做出響應後的操作的部分。我的問題只是作爲PCL支持的枚舉的一部分。Enum PCL不支持是否有解決方法?

例如ConnectionClosed不在PCL構建的枚舉中。

所以真的有兩個問題:
1)爲什麼只支持Enum的一部分(我找不到爲什麼在任何地方)?
2)是否有PCL的解決方法,允許我有近似的行爲?

回答

1

1)基於the documentation,Windows Store應用程序配置文件僅支持一組有限的項目。在這種情況下,PCL只能支持該組項目。

2)如果您的應用程序確實需要處理其他項目,請不要將這段代碼放在PCL中。

+0

1)我明白了,但爲什麼這個子集?我發現了其他限制的文檔,但不是那個枚舉。 2)所以完全減少可能結果數量的一半...... – cdbitesky

+0

微軟從來沒有文檔說明爲什麼一個特定的配置文件(如CF,Silverlight,Windows應用商店,XBox)的API被刪除。我能想到的唯一假設是,對於Windows應用商店應用程序,基礎CLR運行時確保只有在發生Web異常集時才通知應用程序。 –

0

如果你的意思是 - System.Net.WebException 「引發WebException類」

  • System.Object的
    • System.Exception的
    • System.SystemException
    • System.InvalidOperationException
    • 系統.Net.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]屬性

與Stream.Close()VS Stream.Dispose(),你將需要切換使用或找到解決方法,在

類似情況如果是枚舉,可以將其轉換爲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");       
} 
相關問題