コード例 #1
0
ファイル: Program.cs プロジェクト: hold-n/ShapeEditor
        static void Main()
        {
            // TODO: init by attribute?

            // NOTE: shapeFactory should be registered as singleton
            var shapeFactory = new ShapeFactory();

            shapeFactory.Register("line", new LineShapeBuilder());
            shapeFactory.Register("arc", new ArcShapeBuilder());
            shapeFactory.Register("curve", new CurveShapeBuilder());
            shapeFactory.Register("rectangle", new RectangleShapeBuilder());
            shapeFactory.Register("ellipse", new EllipseShapeBuilder());
            shapeFactory.Register("string", new StringShapeBuilder());

            var commandProcessor = new ControlCommandProcessor();

            commandProcessor.Register("linecolor", new LineColorContextUpdater());
            commandProcessor.Register("linewidth", new LineWidthContextUpdater());

            var shapeLoader = new ShapeLoader();
            // NOTE: shapeLoaderFactory should be registered as singleton
            var shapeLoaderFactory = new ShapeLoaderFactory(shapeLoader);

            var interpreter = new ShapeInterpreter(shapeFactory, commandProcessor);

            Form MainFormFactory() => new MainForm(interpreter, shapeLoaderFactory);

            var pluginLoader = new AggregatePluginLoader(new IPluginLoader[]
            {
                new ShapeBuilderPluginLoader(shapeFactory),
                new ShapeLoaderPluginLoader(shapeLoaderFactory),
            });

            var app = new ShapeEditorApp(pluginLoader, MainFormFactory);

            app.Run();
        }
コード例 #2
0
 public NetworkController(Device DebugDevice)
 {
     debugProcessor = new DebugCommandProcessor(DebugDevice);
     controlProcessor = new ControlCommandProcessor(DebugDevice);
 }