У меня есть проект, который содержит класс, рисующий график. Класс выглядит так:-
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
}
}
}
Это управляется веб-приложением, содержащимся в другом проекте в том же решении. Теперь у меня есть требование создать приложение форм, которое будет рисовать точно такой же график, используя точно такие же входные данные в веб-форме. Я хочу включить проект во второе решение. Но класс должен выглядеть вот так:-
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
}
}
}
Я хотел бы знать, можно ли использовать один и тот же проект/класс/код для обоих, поскольку, естественно, я не хочу вырезать и вставлять код в два разных места, и единственная разница заключается в using
директива.
Я не понимаю, как можно использовать дженерики, поскольку внутри функций объектов в (альтернативных )пространствах имен есть объявления, такие как ChartArea, показанная выше. Я не вижу способа использовать условную компиляцию, поскольку требуемая строка зависит от того, в каком решении находится проект, а не от самого проекта, и он не может ссылаться на вызывающий проект, поскольку это создало бы циклическую ссылку. Я также не могу преобразовать веб-график в граф окна.
Лучшее, что мне удалось сделать, это предоставить обе директивы using
, но закомментировать одну из них в соответствии с решением, над которым я сейчас работаю. Но это не кажется мне очень удовлетворительным. Есть ли способ лучше? Или мне не стоит так бездельничать и писать код дважды?