Free cookie consent management tool by TermsFeed Policy Generator

source: branches/3.2/sources/HeuristicLab.PluginInfrastructure/Interfaces/IApplicationManager.cs @ 16755

Last change on this file since 16755 was 3092, checked in by gkronber, 15 years ago

Fixed relevant warnings in the plugin infrastructure (didn't fix warnings about XML comments of members that will be removed soon). #915 (Remove warnings from HL 3.3 solution)

File size: 4.4 KB
Line 
1#region License Information
2/* HeuristicLab
3 * Copyright (C) 2002-2010 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
22using System;
23using System.Collections.Generic;
24using System.Text;
25using System.Windows.Forms;
26using System.Reflection;
27
28namespace HeuristicLab.PluginInfrastructure {
29  /// <summary>
30  /// Interface for application managers.
31  /// </summary>
32  public interface IApplicationManager {
33    /// <summary>
34    /// Gets all discovered plugins.
35    /// </summary>
36    IEnumerable<IPluginDescription> Plugins { get; }
37
38    /// <summary>
39    /// Gets all discovered applications.
40    /// </summary>
41    IEnumerable<IApplicationDescription> Applications { get; }
42
43    /// <summary>
44    /// Discovers and creates instances of <typeparamref name="T"/> and all types implementing or inheriting <typeparamref name="T"/> (directly and indirectly).
45    /// </summary>
46    /// <typeparam name="T">The type or super-type to discover.</typeparam>
47    /// <returns>An enumerable of instances of the discovered types.</returns>
48    IEnumerable<T> GetInstances<T>() where T : class;
49
50    /// <summary>
51    /// Discovers and creates instances of <paramref name="type"/> and all types implementing or inheriting <paramref name="type"/> (directly and indirectly).
52    /// </summary>
53    /// <param name="type">The type or super-type to discover.</param>
54    /// <returns>An enumerable of instances of the discovered types.</returns>
55    IEnumerable<object> GetInstances(Type type);
56
57    /// <summary>
58    /// Discovers all types implementing or inheriting <paramref name="type"/> (directly and indirectly).
59    /// </summary>
60    /// <param name="type">The type to discover.</param>
61    /// <returns>An enumerable of discovered types.</returns>
62    IEnumerable<Type> GetTypes(Type type);
63
64    /// <summary>
65    /// Discovers all types implementing or inheriting <paramref name="type"/> (directly and indirectly).
66    /// </summary>
67    /// <param name="type">The type to discover.</param>
68    /// <param name="onlyInstantiable">Return only types that are instantiable (instance, abstract... are not returned)</param>
69    /// <returns>An enumerable of discovered types.</returns>
70    IEnumerable<Type> GetTypes(Type type, bool onlyInstantiable);
71
72    /// <summary>
73    /// Discovers all types implementing or inheriting <paramref name="type"/> (directly and indirectly) that are declaed in any assembly of <paramref name="plugin"/>.
74    /// </summary>
75    /// <param name="type">The type to discover.</param>
76    /// <param name="plugin">The declaring plugin.</param>
77    /// <returns>An enumerable of discovered types.</returns>
78    IEnumerable<Type> GetTypes(Type type, IPluginDescription plugin);
79
80    /// <summary>
81    /// Discovers all types implementing or inheriting <paramref name="type"/> (directly and indirectly) that are declaed in any assembly of <paramref name="plugin"/>.
82    /// </summary>
83    /// <param name="type">The type to discover.</param>
84    /// <param name="plugin">The declaring plugin.</param>
85    /// <param name="onlyInstantiable">Return only types that are instantiable (instance, abstract... are not returned)</param>
86    /// <returns>An enumerable of discovered types.</returns>
87    IEnumerable<Type> GetTypes(Type type, IPluginDescription plugin, bool onlyInstantiable);
88
89    /// <summary>
90    /// Finds the plugin that declares the <paramref name="type">type</paramref>.
91    /// </summary>
92    /// <param name="type">The type of interest.</param>
93    /// <returns>The description of the plugin that declares the given type or null if the type has not been declared by a known plugin.</returns>
94    IPluginDescription GetDeclaringPlugin(Type type);
95  }
96}
Note: See TracBrowser for help on using the repository browser.