0

.NET 2.0 Winforms アプリケーションを ASP.NET MVC3 に変換しています。Winforms ソリューションは、ビジネス ロジックに複数のプロジェクトを使用し、MVC アプリケーションにはこれらのプロジェクトが含まれています。プロジェクトは、さまざまな Windows コンソール アプリケーションでも使用されます。

問題は、これらのプロジェクトが使用System.Windows.Forms.Application.StartupPathするファイルを見つけるために使用するのに対し、Web 開発System.Web.HttpRunTime.AppDomainAppPathでは使用されることです。

両方のソリューションが同じプロジェクトを使用し、これらのプロジェクトは大きく、古く、比較的文書化されていないため、できるだけ変更しないことをお勧めします。この問題に対処する正しい方法は何ですか?

現在、WEB を定義する各プロジェクトで新しい構成を作成し、#if/#elseステートメントを使用して正しい依存関係を含め、getPath()メソッドの戻り値を定義することを考えています。

4

2 に答える 2

1

プリプロセッサでコードを悩ませ始める前に、インターフェイスの作成を検討する必要がありますIApplicationConfiguratorIApplicationStarter

public interface IApplicationStarter
{
    string GetPath();
}

MvcApplicationStarterそして、アプリケーションに応じて、またはに応じてそれを注入しWinformsApplicationStarterます。IApplicationStarter次に、プロジェクトライブラリにインターフェイスへの依存関係を持たせることができます。プロジェクトへの実装は最小限で済み、他の一般的な依存関係にパターンを再利用できます。このアプローチを次のレベルに引き上げる依存性注入フレームワークを調べてください。

于 2013-03-06T04:35:01.577 に答える
1

これがクラスライブラリの目的です。クラスライブラリプロジェクトを作成し、そこにすべての共通ビットを移動してから、両方がクラスライブラリを参照する個別のWinFormsおよびMVCプロジェクトを作成します。

于 2013-03-05T21:25:23.450 に答える