繁体   English   中英

C#,Metro Application,自定义异常类

[英]C#, Metro Application, custom exception class

多年来,我一直在关注如何编写自定义异常类的MS最佳实践(甚至不记得它是由FxCop还是由我阅读的文章首次强制执行)并按以下方式编写我的类:

using System;
using System.Runtime.Serialization;

[Serializable]
public sealed class MyGreatException : Exception
{
  public MyGreatException()
  : base() {}

  public MyGreatException(string message)
  : base(message) {}

  public MyGreatException(string message, Exception inner)
  : base(message, inner) {}

  private MyGreatException(SerializationInfo info, StreamingContext context)
  : base(info, context) {}
}

今天,这些课程被Windows 8 App Cert Kit拒绝:

 .API System.Runtime.Serialization.SerializationInfo in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. com.visionobjects.myscript.hwr.dll calls this API.
 .API System.SerializableAttribute in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. com.visionobjects.myscript.hwr.dll calls this API.

(以及其他拒绝...)

那么现在是2012年,我该如何编写自定义异常类? 我是否只需要删除[Serializable]和私有构造函数来处理自定义序列化(我不需要它)?


编辑

我删除了[Serializable]和私有构造函数。 我想这会使我的自定义异常类不可序列化。 由于这是一个由类库公开的类,这对使用库的代码有何影响?

它看起来不像在.NET框架的Metro兼容版本中支持System.Runtime.Serialization.SerializationInfo 有关他们从System.Runtime命名空间选择支持哪些类的详细信息,请参阅http://msdn.microsoft.com/en-us/library/windows/apps/hh454059(v=vs.110).aspx 请记住,这可能会有所变化。

所以,是的,取出你的Serialization属性和私有构造函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM