2012-04-23 5 views
6

私は、カスタム例外クラスを書く方法について、MSのベストプラクティスに従ってきました(FxCopによって最初に強制されたのか、だから今、それはだとC#、メトロアプリケーション、カスタム例外クラス

.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. 

(他は拒否の中で...)

を:これらのクラスは、Windows 8アプリ証明書キットによって拒否されます

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) {} 
} 

今日:と私のクラス次のように書いています2012年カスタム例外クラスを作成するにはどうすればよいですか? [Serializable]とカスタムシリアル化(私はとにかく必要ない)を処理するプライベートコンストラクタを削除するだけですか?


EDIT

私は[Serializable]とプライベートコンストラクタを削除しました。私はそれが私のカスタム例外クラスをシリアライズ不可能にすると思います。これはクラスライブラリによって公開されるクラスなので、ライブラリを使用してコードにどのような影響を与えますか?

+1

あなたの質問で「ありがとう」と署名することは許可されていませんか? :) –

+0

挨拶、挨拶やその他の通常の書式は、そんなに怒っている。個人的には気にしませんが、編集する人もいます。 – jv42

答えて

2

.NETフレームワークのMetro互換バージョンではまだSystem.Runtime.Serialization.SerializationInfoがサポートされていません。 System.Runtime名前空間からサポートするクラスの詳細については、http://msdn.microsoft.com/en-us/library/windows/apps/hh454059(v=vs.110).aspxを参照してください。これは変更されることがありますのでご注意ください。

はい、シリアル化属性とプライベートコンストラクタを取り出してください。

+1

さらに重要なことに、以前の.NETライブラリへの参照を取り除いて、間違いなく許可されていない他の多くのものを誤って使用しないようにします –

関連する問題