5

私はいくつかのかみそりヘルパーを書きました、そしてこれらのヘルパーはT4MVCによって生成された拡張メソッドを含む関数を使用します。これらをコントロールライブラリに移動して、複数のMVCアプリケーションで使用できるようにします。私が使用した最初のアイデアは、テンプレートのコピーをコントロールライブラリに配置できるというものでした。これは機能しますが、欠点は、アプリケーションで使用されるテンプレートが同じ名前空間で同じ拡張メソッドを再生成することです。ActionResultのインターフェイスを必要とする拡張機能の一部を使用しているため、名前空間を同じままにする必要があります。

私が疑問に思っているのは、コントロールライブラリとライブラリを参照するアプリケーションで拡張機能を使用する既知の方法があるか、または静的拡張機能メソッドを生成できるようにするために必要なテンプレートを変更することです。設定ファイルのフラグ?また、静的拡張機能を、テンプレートと一緒に存在する別のcsファイルに含めることができるかどうか疑問に思っています。T4ExtensionsとDynamicT4Extensionsの2つのクラスがありますか?

ただし、これにより、インターフェイスIT4MVCActionResultの使用が強制される可能性があります。

4

1 に答える 1

2

これはhttp://forums.asp.net/p/1510753/3603100.aspxと似ていますが、まったく同じではありません。

解決策は、これらの静的メソッドの生成をオフにする新しいスイッチを設定ファイルに追加することではないかと思います。したがって、参照されているアセンブリから既にそれらを取得していることがわかっている場合は、アプリでそれらをオフにします。

関係のないライブラリが複数あり、それぞれがメソッドを使用する必要がある場合は、アプリがあいまいな参照を取得するため、それでも問題が発生する可能性があります。

メソッドの一部は、異なるアセンブリに存在するビューから呼び出す必要があるため、メソッドを内部にすることはできないことに注意してください。

そして理想的には、T4MVCがあまりにも多くのファイルを取り込むと不平を言うユーザーがいるので、それらをまだ別のファイルに入れることは避けたいと思います。

申し訳ありませんが、明確な答えではありませんが、可能性についてもっと考えています。:)

于 2011-04-06T23:36:29.973 に答える