Free cookie consent management tool by TermsFeed Policy Generator

source: branches/2817-BinPackingSpeedup/HeuristicLab.PluginInfrastructure/3.3/BaseClasses/ApplicationBase.cs @ 18242

Last change on this file since 18242 was 16140, checked in by abeham, 6 years ago

#2817: updated to trunk r15680

File size: 2.4 KB
Line 
1#region License Information
2/* HeuristicLab
3 * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
4 *
5 * This file is part of HeuristicLab.
6 *
7 * HeuristicLab is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * HeuristicLab is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
19 */
20#endregion
21
22
23namespace HeuristicLab.PluginInfrastructure {
24  /// <summary>
25  /// Abstract base implementation for the IApplication interface.
26  /// </summary>
27  public abstract class ApplicationBase : IApplication {
28    /// <summary>
29    /// Initializes a new instance of <see cref="ApplicationBase"/>.
30    /// </summary>
31    protected ApplicationBase() { }
32
33    private ApplicationAttribute ApplicationAttribute {
34      get {
35        object[] appAttributes = this.GetType().GetCustomAttributes(typeof(ApplicationAttribute), false);
36
37        // exactly one attribute of the type ClassInfoAttribute must be given
38        if (appAttributes.Length == 0) {
39          throw new InvalidPluginException("ApplicationAttribute on type " + this.GetType() + " is missing.");
40        } else if (appAttributes.Length > 1) {
41          throw new InvalidPluginException("Found multiple ApplicationAttributes on type " + this.GetType());
42        }
43
44        return (ApplicationAttribute)appAttributes[0];
45      }
46    }
47
48    #region IApplication Members
49
50    /// <summary>
51    /// Gets the name of the application.
52    /// </summary>
53    public string Name {
54      get { return ApplicationAttribute.Name; }
55    }
56
57    /// <summary>
58    /// Gets the description of the application.
59    /// </summary>
60    public string Description {
61      get {
62        return ApplicationAttribute.Description;
63      }
64    }
65
66    /// <summary>
67    /// Runs the application.
68    /// </summary>
69    public abstract void Run(ICommandLineArgument[] args);
70
71    #endregion
72  }
73}
Note: See TracBrowser for help on using the repository browser.