グラフを描画するクラスを含むプロジェクトがあります。クラスは次のようになります。
using System.Web.UI.DataVisualization.Charting;
namespace MyNameSpace
{
public static class Utilities
{
public static void DrawOnGraph (Chart ourChart,
// ...more parameters...
)
{
ChartArea our_area = new ChartArea("Main");
// Draw things
}
}
}
これは、同じソリューション内の別のプロジェクトに含まれる Web アプリケーションによって引き起こされます。Webフォームに正確に同じ入力を使用して正確に同じグラフを描画するフォームアプリケーションを作成する必要があります。プロジェクトを2番目のソリューションに含めたいと思います。しかし、クラスは次のようにする必要があります:-
using System.Windows.Forms.DataVisualization.Charting;
namespace MyNameSpace
{
public static class Utilities
{
public static void DrawOnGraph (Chart ourChart,
// ...more parameters...
)
{
ChartArea our_area = new ChartArea("Main");
// Draw things
}
}
}
同じプロジェクト/クラス/コードを両方に使用できるかどうかを知りたいのですが、当然のことながら、コードを2つの異なる場所にカットアンドペーストしたくないので、唯一の違いはusing
ディレクティブです。
上記の ChartArea など、(代替) 名前空間のオブジェクトの関数内に宣言があるため、ジェネリックを使用する方法がわかりません。どの行が必要かは、プロジェクト自体ではなく、プロジェクトが含まれているソリューションに依存するため、条件付きコンパイルを使用する方法がわかりません。循環参照が作成されるため、呼び出し元プロジェクトを参照できません。Web グラフを Windows グラフにキャストすることもできません。
私が管理できた最善の方法は、両方のusing
ディレクティブを提供することですが、現在取り組んでいるソリューションに応じて、そのうちの 1 つをコメントアウトすることです。しかし、それは私にはあまり満足のいくものではないようです。より良い方法はありますか?それとも、怠けてコードを 2 回書くべきではありませんか?