2013-07-23 107 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");       
} 
相关问题