2

OperationAbortedExceptionを作成するにはどうすればよいですか?このコードは機能しません:

var ex = new OperationAbortedException("Cannot update event comment");

エラー:プライベートコンストラクタ'OperationAbortedException'にアクセスできません。

4

3 に答える 3

9

-class (System.Data.OperationAbortException質問で完全に修飾しなかったので、これを意味していると思います)。パブリックコンストラクタはなく、ですsealed。これらは、フレームワーク設計者があなた自身の目的のためにその例外を使用することを望まなかったことを強く示唆しています。おそらく、フレームワークの一部の内部動作が混乱するためです。

目的に応じて別の例外を使用する必要があります。メッセージテキストから、次の既存の例外を渡すことが思い浮かびます。

.NET Frameworkから既存の例外を選択するときは、クラスの名前だけで例外を選択しないようにしてください。それぞれのMSDNページを読んで、(元の)例外の意図を理解してください。それぞれのドキュメントは、常に「スローされる例外...」という単語で始まります。そのテキストが意図に一致することがわかった場合は、フレームワークからの例外を再利用します(または、最終的に例外をキャッチするときに、より細かく制御するためにフレームワークから派生します)。

または、必要に応じて、独自の例外タイプを作成します。

于 2012-09-03T11:17:12.460 に答える
2

あなたがそのSystem.Data.OperationAbortedException時いいえについて話しているなら、あなたはインスタンスを直接構築することはできません、公共の建設者は存在しません。

本当に必要な場合は、この回答で説明されている方法でリフレクションを使用できますが、使用しないことをお勧めします。フレームワークの設計が破損している可能性があります。


使用できるコードは次のとおりですが、使用しないでください

var ctor = typeof(OperationAbortException).GetConstructor(
    BindingFlags.NonPublic|BindingFlags.Instance,
    null, 
    new Type[0], 
    null);
var instance = (OperationAbortException)ctor.Invoke(null);

複数ある場合は、使用するプライベートコンストラクターと、どのプロパティを何に設定するかを決定する必要があります。この動作が後のフレームワークバージョンで持続するという保証はありません。

于 2012-09-03T11:17:49.973 に答える
1

これは不可能です。OperationAbortedExceptionには、プライベートコンストラクターと、そのコンストラクターを呼び出す内部静的メソッドがあります。別のアセンブリから新しいOperationAbortedExceptionを作成することはできません。

于 2012-09-03T11:16:57.610 に答える