gpt4 book ai didi

C#、Metro 应用程序、自定义异常类

转载 作者:太空狗 更新时间:2023-10-29 21:55:07 27 4
gpt4 key购买 nike

多年来,我一直在遵循 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] 和应该处理自定义序列化的私有(private)构造函数(反正我不需要)?


编辑

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

最佳答案

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

所以是的,取出你的序列化属性和私有(private)构造函数。

关于C#、Metro 应用程序、自定义异常类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10283475/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com