2011-09-13 18 views
2

私はトランザクション内で使用できるライブラリをC#で作成しています。ただし、一部のメソッドはロールバックできないため、トランザクションで使用しないでください。これらの非トランザクション・メソッドは、トランザクション内で使用されると実行時に例外をスローします。C#でカスタムコンパイラエラーを強制することはできますか?

質問は、どういうわけか、トランザクション内で非トランザクションメソッドが使用されているとコンパイル時エラーが発生する可能性がありますか?

ありがとうございます。

更新

私は、コンパイル時エラーが私のライブラリを使用するサードパーティの利益のためであることを明確にすべきです。したがって、別のフレームワークまたは拡張を必要とするソリューションでは十分ではありません。理想的なソリューションは、Visual Studioでのプロジェクトのコンパイルを停止します。

答えて

4

これは不可能です。

トランザクション中であるかどうかをコンパイル時に確実に判断することはできません。私はそれがC#のでは可能だとは思わないが、それはMicrosoftのコードコントラクトを使用している可能性があり

if (...) 
    thingy.BeginTransaction(); 
thingy.NonTransactionalMethod(); 
3

は、次のコードを考えてみましょう。

コードコントラクト:
http://research.microsoft.com/en-us/projects/specsharp/

EDIT

彼の提案のために@ジョナサンディキンソンのおかげで - 別のオプションあなた:あなたはまた、スペック#を見てかかることがあります
http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx

FXCop:

http://msdn.microsoft.com/en-us/library/bb429476(v=vs.80).aspx

http://www.ademiller.com/blogs/tech/2009/06/making-sure-fxcop-warnings-and-errors-break-the-build/

+1

私はノーと言うつもりだったが、あなたは完全に正しいです。 FXCopの方が適切です - http://msdn.microsoft.com/en-us/library/bb429476(v=vs.80).aspx - おそらくあなたの答えを更新しますか? –

+0

@ジョナサン・ディキンソン:リンクありがとう。私はそれを見てみましょう。 –

関連する問題