Index: trunk/sources/HeuristicLab.Core.Views/3.3/TypeSelector.cs
===================================================================
--- trunk/sources/HeuristicLab.Core.Views/3.3/TypeSelector.cs	(revision 7108)
+++ trunk/sources/HeuristicLab.Core.Views/3.3/TypeSelector.cs	(revision 7111)
@@ -128,5 +128,5 @@
           pluginNode.Tag = plugin;
 
-          var types = from t in ApplicationManager.Manager.GetTypes(BaseTypes, plugin, !ShowNotInstantiableTypes, assignableToAllTypes)
+          var types = from t in ApplicationManager.Manager.GetTypes(BaseTypes, plugin, !ShowNotInstantiableTypes, ShowGenericTypes, assignableToAllTypes)
                       where typeCondition(t)
                       orderby t.Name ascending
@@ -134,5 +134,4 @@
           foreach (Type type in types) {
             bool valid = true;
-            valid = valid && (ShowGenericTypes || !type.ContainsGenericParameters);
             valid = valid && (ShowNotInstantiableTypes || type.GetConstructor(Type.EmptyTypes) != null); //check for public default ctor
             if (valid) {
Index: trunk/sources/HeuristicLab.MainForm/3.3/MainFormManager.cs
===================================================================
--- trunk/sources/HeuristicLab.MainForm/3.3/MainFormManager.cs	(revision 7108)
+++ trunk/sources/HeuristicLab.MainForm/3.3/MainFormManager.cs	(revision 7111)
@@ -49,5 +49,5 @@
         MainFormManager.mainform = mainForm;
         IEnumerable<Type> types =
-          from t in ApplicationManager.Manager.GetTypes(typeof(IContentView), false)
+          from t in ApplicationManager.Manager.GetTypes(typeof(IContentView), true, true)
           where !t.IsAbstract && !t.IsInterface && ContentAttribute.HasContentAttribute(t)
           select t;
Index: trunk/sources/HeuristicLab.PluginInfrastructure/3.3/Interfaces/IApplicationManager.cs
===================================================================
--- trunk/sources/HeuristicLab.PluginInfrastructure/3.3/Interfaces/IApplicationManager.cs	(revision 7108)
+++ trunk/sources/HeuristicLab.PluginInfrastructure/3.3/Interfaces/IApplicationManager.cs	(revision 7111)
@@ -58,5 +58,5 @@
     /// <param name="onlyInstantiable">Return only types that are instantiable (instance, abstract... are not returned)</param>
     /// <returns>An enumerable of discovered types.</returns>
-    IEnumerable<Type> GetTypes(Type type, bool onlyInstantiable = true);
+    IEnumerable<Type> GetTypes(Type type, bool onlyInstantiable = true, bool includeGenericTypeDefinitions = false);
 
     /// <summary>
@@ -67,5 +67,5 @@
     /// <param name="assignableToAllTypes">Specifies if discovered types must implement or inherit all given <paramref name="types"/>.</param>
     /// <returns>An enumerable of discovered types.</returns>
-    IEnumerable<Type> GetTypes(IEnumerable<Type> types, bool onlyInstantiable = true, bool assignableToAllTypes = true);
+    IEnumerable<Type> GetTypes(IEnumerable<Type> types, bool onlyInstantiable = true, bool includeGenericTypeDefinitions = false, bool assignableToAllTypes = true);
 
     /// <summary>
@@ -76,5 +76,5 @@
     /// <param name="onlyInstantiable">Return only types that are instantiable (instance, abstract... are not returned)</param>
     /// <returns>An enumerable of discovered types.</returns>
-    IEnumerable<Type> GetTypes(Type type, IPluginDescription plugin, bool onlyInstantiable = true);
+    IEnumerable<Type> GetTypes(Type type, IPluginDescription plugin, bool onlyInstantiable = true, bool includeGenericTypeDefinitions = false);
 
     /// <summary>
@@ -86,5 +86,5 @@
     /// /// <param name="assignableToAllTypes">Specifies if discovered types must implement or inherit all given <paramref name="types"/>.</param>
     /// <returns>An enumerable of discovered types.</returns>
-    IEnumerable<Type> GetTypes(IEnumerable<Type> types, IPluginDescription plugin, bool onlyInstantiable = true, bool assignableToAllTypes = true);
+    IEnumerable<Type> GetTypes(IEnumerable<Type> types, IPluginDescription plugin, bool onlyInstantiable = true, bool includeGenericTypeDefinitions = false, bool assignableToAllTypes = true);
 
     /// <summary>
Index: trunk/sources/HeuristicLab.PluginInfrastructure/3.3/LightweightApplicationManager.cs
===================================================================
--- trunk/sources/HeuristicLab.PluginInfrastructure/3.3/LightweightApplicationManager.cs	(revision 7108)
+++ trunk/sources/HeuristicLab.PluginInfrastructure/3.3/LightweightApplicationManager.cs	(revision 7111)
@@ -73,5 +73,5 @@
     public IEnumerable<object> GetInstances(Type type) {
       List<object> instances = new List<object>();
-      foreach (Type t in GetTypes(type, true)) {
+      foreach (Type t in GetTypes(type)) {
         object instance = null;
         try { instance = Activator.CreateInstance(t); }
@@ -88,9 +88,10 @@
     /// <remarks>Return only types that are instantiable 
     /// (interfaces, abstract classes... are not returned)</remarks>
+    /// <param name="includeGenericTypeDefinitions">Specifies if generic type definitions shall be included</param>
     /// <returns>Enumerable of the discovered types.</returns>
-    public IEnumerable<Type> GetTypes(IEnumerable<Type> types, bool onlyInstantiable = true, bool assignableToAllTypes = true) {
-      IEnumerable<Type> result = GetTypes(types.First(), onlyInstantiable);
+    public IEnumerable<Type> GetTypes(IEnumerable<Type> types, bool onlyInstantiable = true, bool includeGenericTypeDefinitions = false, bool assignableToAllTypes = true) {
+      IEnumerable<Type> result = GetTypes(types.First(), onlyInstantiable, includeGenericTypeDefinitions);
       foreach (Type type in types.Skip(1)) {
-        IEnumerable<Type> discoveredTypes = GetTypes(type, onlyInstantiable);
+        IEnumerable<Type> discoveredTypes = GetTypes(type, onlyInstantiable, includeGenericTypeDefinitions);
         if (assignableToAllTypes) result = result.Intersect(discoveredTypes);
         else result = result.Union(discoveredTypes);
@@ -105,8 +106,9 @@
     /// <param name="onlyInstantiable">Return only types that are instantiable 
     /// (interfaces, abstract classes... are not returned)</param>
+    /// <param name="includeGenericTypeDefinitions">Specifies if generic type definitions shall be included</param>
     /// <returns>Enumerable of the discovered types.</returns>
-    public IEnumerable<Type> GetTypes(Type type, bool onlyInstantiable = true) {
+    public IEnumerable<Type> GetTypes(Type type, bool onlyInstantiable = true, bool includeGenericTypeDefinitions = false) {
       return from asm in AppDomain.CurrentDomain.GetAssemblies()
-             from t in GetTypes(type, asm, onlyInstantiable)
+             from t in GetTypes(type, asm, onlyInstantiable, includeGenericTypeDefinitions)
              select t;
     }
@@ -120,5 +122,5 @@
     /// (interfaces, abstract classes...  are not returned)</param>
     /// <returns>Enumerable of the discovered types.</returns>
-    private static IEnumerable<Type> GetTypes(Type type, Assembly assembly, bool onlyInstantiable = true) {
+    private static IEnumerable<Type> GetTypes(Type type, Assembly assembly, bool onlyInstantiable = true, bool includeGenericTypeDefinitions = false) {
       try {
         var assemblyTypes = assembly.GetTypes();
@@ -131,5 +133,5 @@
 
         return from t in buildTypes
-               where onlyInstantiable == false || !t.IsGenericTypeDefinition
+               where includeGenericTypeDefinitions || !t.IsGenericTypeDefinition
                select t;
       }
@@ -182,7 +184,8 @@
     /// <param name="plugin"></param>
     /// <param name="onlyInstantiable"></param>
-    /// <returns></returns>
-    /// <throws>NotSupportedException</throws>
-    public IEnumerable<Type> GetTypes(Type type, IPluginDescription plugin, bool onlyInstantiable = true) {
+    /// <param name="includeGenericTypeDefinitions"></param>
+    /// <returns></returns>
+    /// <throws>NotSupportedException</throws>
+    public IEnumerable<Type> GetTypes(Type type, IPluginDescription plugin, bool onlyInstantiable = true, bool includeGenericTypeDefinitions = false) {
       throw new NotSupportedException("LightweightApplicationManager doesn't support type discovery for plugins.");
     }
@@ -194,7 +197,8 @@
     /// <param name="plugin"></param>
     /// <param name="onlyInstantiable"></param>
-    /// <returns></returns>
-    /// <throws>NotSupportedException</throws>
-    public IEnumerable<Type> GetTypes(IEnumerable<Type> types, IPluginDescription plugin, bool onlyInstantiable = true, bool assignableToAllTypes = true) {
+    /// <param name="includeGenericTypeDefinitions"></param>
+    /// <returns></returns>
+    /// <throws>NotSupportedException</throws>
+    public IEnumerable<Type> GetTypes(IEnumerable<Type> types, IPluginDescription plugin, bool onlyInstantiable = true, bool includeGenericTypeDefinitions = false, bool assignableToAllTypes = true) {
       throw new NotSupportedException("LightweightApplicationManager doesn't support type discovery for plugins.");
     }
Index: trunk/sources/HeuristicLab.PluginInfrastructure/3.3/SandboxApplicationManager.cs
===================================================================
--- trunk/sources/HeuristicLab.PluginInfrastructure/3.3/SandboxApplicationManager.cs	(revision 7108)
+++ trunk/sources/HeuristicLab.PluginInfrastructure/3.3/SandboxApplicationManager.cs	(revision 7111)
@@ -148,5 +148,5 @@
     internal static IEnumerable<T> GetInstances<T>(IPluginDescription plugin) where T : class {
       List<T> instances = new List<T>();
-      foreach (Type t in GetTypes(typeof(T), plugin, true)) {
+      foreach (Type t in GetTypes(typeof(T), plugin, onlyInstantiable: true, includeGenericTypeDefinitions: false)) {
         T instance = null;
         try { instance = (T)Activator.CreateInstance(t); }
@@ -164,5 +164,5 @@
     private static IEnumerable<T> GetInstances<T>(Assembly asm) where T : class {
       List<T> instances = new List<T>();
-      foreach (Type t in GetTypes(typeof(T), asm, true)) {
+      foreach (Type t in GetTypes(typeof(T), asm, onlyInstantiable: true, includeGenericTypeDefinitions: false)) {
         T instance = null;
         try { instance = (T)Activator.CreateInstance(t); }
@@ -189,5 +189,5 @@
     internal static IEnumerable<object> GetInstances(Type type) {
       List<object> instances = new List<object>();
-      foreach (Type t in GetTypes(type, true)) {
+      foreach (Type t in GetTypes(type, onlyInstantiable: true, includeGenericTypeDefinitions: false)) {
         object instance = null;
         try { instance = Activator.CreateInstance(t); }
@@ -203,16 +203,17 @@
     /// <param name="type">Most general type for which to find matching types.</param>
     /// <param name="onlyInstantiable">Return only types that are instantiable 
+    /// <param name="includeGenericTypeDefinitions">Specifies if generic type definitions shall be included</param>
     /// (interfaces, abstract classes... are not returned)</param>
     /// <returns>Enumerable of the discovered types.</returns>
-    internal static IEnumerable<Type> GetTypes(Type type, bool onlyInstantiable) {
+    internal static IEnumerable<Type> GetTypes(Type type, bool onlyInstantiable, bool includeGenericTypeDefinitions) {
       return from asm in AppDomain.CurrentDomain.GetAssemblies()
-             from t in GetTypes(type, asm, onlyInstantiable)
+             from t in GetTypes(type, asm, onlyInstantiable, includeGenericTypeDefinitions)
              select t;
     }
 
-    internal static IEnumerable<Type> GetTypes(IEnumerable<Type> types, bool onlyInstantiable, bool assignableToAllTypes) {
-      IEnumerable<Type> result = GetTypes(types.First(), onlyInstantiable);
+    internal static IEnumerable<Type> GetTypes(IEnumerable<Type> types, bool onlyInstantiable, bool includeGenericTypeDefinitions, bool assignableToAllTypes) {
+      IEnumerable<Type> result = GetTypes(types.First(), onlyInstantiable, includeGenericTypeDefinitions);
       foreach (Type type in types.Skip(1)) {
-        IEnumerable<Type> discoveredTypes = GetTypes(type, onlyInstantiable);
+        IEnumerable<Type> discoveredTypes = GetTypes(type, onlyInstantiable, includeGenericTypeDefinitions);
         if (assignableToAllTypes) result = result.Intersect(discoveredTypes);
         else result = result.Union(discoveredTypes);
@@ -228,19 +229,20 @@
     /// <param name="pluginDescription">The plugin the subtypes must be part of.</param>
     /// <param name="onlyInstantiable">Return only types that are instantiable 
+    /// <param name="includeGenericTypeDefinitions">Specifies if generic type definitions shall be included</param>
     /// (interfaces, abstract classes... are not returned)</param>
     /// <returns>Enumerable of the discovered types.</returns>
-    internal static IEnumerable<Type> GetTypes(Type type, IPluginDescription pluginDescription, bool onlyInstantiable) {
+    internal static IEnumerable<Type> GetTypes(Type type, IPluginDescription pluginDescription, bool onlyInstantiable, bool includeGenericTypeDefinitions) {
       PluginDescription pluginDesc = (PluginDescription)pluginDescription;
       return from asm in AppDomain.CurrentDomain.GetAssemblies()
              where !IsDynamicAssembly(asm)
              where pluginDesc.AssemblyLocations.Any(location => location.Equals(Path.GetFullPath(asm.Location), StringComparison.CurrentCultureIgnoreCase))
-             from t in GetTypes(type, asm, onlyInstantiable)
+             from t in GetTypes(type, asm, onlyInstantiable, includeGenericTypeDefinitions)
              select t;
     }
 
-    internal static IEnumerable<Type> GetTypes(IEnumerable<Type> types, IPluginDescription pluginDescription, bool onlyInstantiable, bool assignableToAllTypes) {
-      IEnumerable<Type> result = GetTypes(types.First(), pluginDescription, onlyInstantiable);
+    internal static IEnumerable<Type> GetTypes(IEnumerable<Type> types, IPluginDescription pluginDescription, bool onlyInstantiable, bool includeGenericTypeDefinitions, bool assignableToAllTypes) {
+      IEnumerable<Type> result = GetTypes(types.First(), pluginDescription, onlyInstantiable, includeGenericTypeDefinitions);
       foreach (Type type in types.Skip(1)) {
-        IEnumerable<Type> discoveredTypes = GetTypes(type, pluginDescription, onlyInstantiable);
+        IEnumerable<Type> discoveredTypes = GetTypes(type, pluginDescription, onlyInstantiable, includeGenericTypeDefinitions);
         if (assignableToAllTypes) result = result.Intersect(discoveredTypes);
         else result = result.Union(discoveredTypes);
@@ -260,6 +262,7 @@
     /// <param name="onlyInstantiable">Return only types that are instantiable 
     /// (interfaces, abstract classes...  are not returned)</param>
+    /// <param name="includeGenericTypeDefinitions">Specifies if generic type definitions shall be included</param>
     /// <returns>Enumerable of the discovered types.</returns>
-    private static IEnumerable<Type> GetTypes(Type type, Assembly assembly, bool onlyInstantiable) {
+    private static IEnumerable<Type> GetTypes(Type type, Assembly assembly, bool onlyInstantiable, bool includeGenericTypeDefinitions) {
       var buildTypes = from t in assembly.GetTypes()
                        where !IsNonDiscoverableType(t)
@@ -270,5 +273,5 @@
 
       return from t in buildTypes
-             where onlyInstantiable == false || !t.IsGenericTypeDefinition
+             where includeGenericTypeDefinitions || !t.IsGenericTypeDefinition
              select t;
     }
@@ -316,16 +319,16 @@
     }
 
-    IEnumerable<Type> IApplicationManager.GetTypes(Type type, bool onlyInstantiable) {
-      return GetTypes(type, onlyInstantiable);
-    }
-    IEnumerable<Type> IApplicationManager.GetTypes(IEnumerable<Type> types, bool onlyInstantiable, bool assignableToAllTypes) {
-      return GetTypes(types, onlyInstantiable, assignableToAllTypes);
-    }
-
-    IEnumerable<Type> IApplicationManager.GetTypes(Type type, IPluginDescription plugin, bool onlyInstantiable) {
-      return GetTypes(type, plugin, onlyInstantiable);
-    }
-    IEnumerable<Type> IApplicationManager.GetTypes(IEnumerable<Type> types, IPluginDescription plugin, bool onlyInstantiable, bool assignableToAllTypes) {
-      return GetTypes(types, plugin, onlyInstantiable, assignableToAllTypes);
+    IEnumerable<Type> IApplicationManager.GetTypes(Type type, bool onlyInstantiable, bool includeGenericTypeDefinitions) {
+      return GetTypes(type, onlyInstantiable, includeGenericTypeDefinitions);
+    }
+    IEnumerable<Type> IApplicationManager.GetTypes(IEnumerable<Type> types, bool onlyInstantiable, bool includeGenericTypeDefinitions, bool assignableToAllTypes) {
+      return GetTypes(types, onlyInstantiable, includeGenericTypeDefinitions, assignableToAllTypes);
+    }
+
+    IEnumerable<Type> IApplicationManager.GetTypes(Type type, IPluginDescription plugin, bool onlyInstantiable, bool includeGenericTypeDefinitions) {
+      return GetTypes(type, plugin, onlyInstantiable, includeGenericTypeDefinitions);
+    }
+    IEnumerable<Type> IApplicationManager.GetTypes(IEnumerable<Type> types, IPluginDescription plugin, bool onlyInstantiable, bool includeGenericTypeDefinitions, bool assignableToAllTypes) {
+      return GetTypes(types, plugin, onlyInstantiable, includeGenericTypeDefinitions, assignableToAllTypes);
     }
 
Index: trunk/sources/HeuristicLab.Tests/HeuristicLab-3.3/ContentViewTests.cs
===================================================================
--- trunk/sources/HeuristicLab.Tests/HeuristicLab-3.3/ContentViewTests.cs	(revision 7108)
+++ trunk/sources/HeuristicLab.Tests/HeuristicLab-3.3/ContentViewTests.cs	(revision 7111)
@@ -59,5 +59,5 @@
     public void ContentViewAttributeTest() {
       //get all non-generic and instantiable classes which implement IContentView
-      foreach (Type viewType in ApplicationManager.Manager.GetTypes(typeof(IContentView), true).Where(t => !t.ContainsGenericParameters)) {
+      foreach (Type viewType in ApplicationManager.Manager.GetTypes(typeof(IContentView))) {
         //get all ContentAttributes on the instantiable view
         foreach (ContentAttribute attribute in viewType.GetCustomAttributes(typeof(ContentAttribute), false).Cast<ContentAttribute>()) {
