9

たとえばMVCプロジェクトの規則を定義して、コントローラーから継承するクラスの最後にコントローラーが追加されるなどの命名規則を静的にチェックしたり、メソッドを装飾するときに特定のメソッド署名を強制したりできる製品/プロジェクトはありますか属性。

私は基本的に、私たちのチームに参加する新しい開発者のためにいくつかのガードレールを設定する方法を探しています。そこでは、リフレクションを通じて動的に物事を結び付けるために使用される明確な一連の規則があります。互換性のないシグネチャが原因でこのリフレクション ワイヤーアップが失敗することを確認できれば、私たちの立ち上げプロセスに大きな恩恵がもたらされます。

必要な主な機能:

  • 壊れたルールの静的/コンパイル時のチェック
  • 特定の属性で装飾されたメソッドをターゲットにする機能 (正規表現またはウィザードを介して)
  • さまざまな種類のプロジェクトに基づくさまざまなルール セット。(例: MVC アプリ用の一連の規則、Web フォーム アプリ用の別のセット、.BLL という接尾辞が付いたクラス ライブラリ用の別のセット)

入力の提案は大歓迎ですが、これらの機能がサポートされていることがわかっている場合にのみ回答してください.

4

1 に答える 1

4

ここでの個人的な経験ですが、私はいつもこのようなことのためにテストを書いています。アセンブリを解析し、規則に従っていることを確認します。いくつかの具体的な例として、WCF 要求/応答オブジェクトをチェックして、ネットワーク上で "DTO" を送信していないこと、およびそれらがすべて一貫した XML 名前空間にあることを確認します。

すべてのサービス メソッドが BaseResponse オブジェクトを継承するものを返すようにする簡単な例を次に示します。

[Test]
public void All_IMyService_methods_should_return_a_BaseResponse()
{
    var methods = typeof (IMyService).GetMethods();
    foreach (var methodInfo in methods)
        Assert.That(typeof (BaseResponse).IsAssignableFrom(methodInfo.ReturnType), "Service Method " + methodInfo.Name + " does not return a BaseResponse");
}

誰かがより良い/より自動化されたものを持っていると確信していますが、これは私にとってはうまくいきました。

于 2012-01-27T22:30:26.953 に答える