c# - 关于实现工厂类型类的建议

标签 c# asp.net factory-pattern

我有两个几乎完全相同的类。他们都制作视觉图表,实际上是同一个视觉图表。一个为窗口生成图表,一个为网络生成图表。 ChartFactoryA 使用的类实际上只有一处不同

using System.Windows.Forms.DataVisualization.Charting;

虽然 ChartFactoryB 使用

using System.Web.UI.DataVisualization.Charting;

基本上这两个图表采用相同的数据并构建,然后返回最终图表。我想要一些关于从两个类中创建一个类的指导,以便我可以将它移到我的共享库中。

这是类的公私接口(interface)

public class ChartFactory
{
    private const int MAX_POINTS_DISPLAYED = 5;
    private const int MAX_POINTS_TRACKED = 6;

    public static Chart CreateChart(UserCourse userCourse)

    private static Chart InitilizeChart()

    private static Chart CreateEmptyChart()

    private static ChartArea CreateEmptyChartArea()

    private static void SetUpAxisY(ChartArea chartArea)

    private static void SetUpAxisX(ChartArea chartArea)

    private static Series CreateEmptyDataSeries()

    private static void AttachStripLineToChart(ChartArea chartArea)

    private static void PopulateChartWithData(Chart chart, UserCourse userCourse)

    private static ChartPoint[] InitilizeChartPoints(SessionsReadOnly sessions, int pointCount)

    private static void PopulateChartPointsWithSessions(SessionsReadOnly sessions, int pointCount, ChartPoint[] chartPoints)

    private static void DisplayChartPointsInReverse(Chart chart, ChartPoint[] chartPoints)

最佳答案

使用#define

示例(从 Json.Net 项目复制)

using System;
using System.Collections.Generic;
#if !SILVERLIGHT && !PocketPC && !NET20
using System.ComponentModel.DataAnnotations;
using System.Configuration;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Web.Script.Serialization;
#endif
using System.Text;
using NUnit.Framework;
using Newtonsoft.Json;
using System.IO;
using System.Collections;
using System.Xml;
using System.Xml.Serialization;
using System.Collections.ObjectModel;
using Newtonsoft.Json.Linq;
using System.Linq;
using Newtonsoft.Json.Converters;
#if !PocketPC && !NET20 && !WINDOWS_PHONE
using System.Runtime.Serialization.Json;
#endif
using Newtonsoft.Json.Tests.TestObjects;
using System.Runtime.Serialization;
using System.Globalization;
using Newtonsoft.Json.Utilities;
using System.Reflection;
#if !NET20 && !SILVERLIGHT
using System.Xml.Linq;
using System.Text.RegularExpressions;
using System.Collections.Specialized;
using System.Linq.Expressions;
#endif
#if !(NET35 || NET20 || WINDOWS_PHONE)
using System.Dynamic;
using System.ComponentModel;
#endif

关于c# - 关于实现工厂类型类的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8123755/

相关文章:

c# - 查找 ActiveX 组件的所有属性

asp.net - 扩展 ASP.NET 成员资格提供程序,PK == FK == 可以吗?

c# - MSMQ接收和删除

c# - 在控制台应用程序中异步和等待

c# - ASP.NET 身份编辑登录用户数据?

design-patterns - 在 Magento 2 中,工厂模式和用途是什么?

c# - 为了在 c# 中动态返回所需的 DTO 使用什么设计模式

perl - 在对象实例上调用 new 有什么好处?

c# - UWP 中的 Xamarin Forms MasterDetailPage 按钮填充问题

jquery - 使用 jQuery Ajax 跨域调用 ASP Web API