Changeset 7669 for branches/HeuristicLab.Hive.Azure/HeuristicLab.MainForm
- Timestamp:
- 03/28/12 15:47:26 (13 years ago)
- Location:
- branches/HeuristicLab.Hive.Azure
- Files:
-
- 3 edited
- 3 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Hive.Azure
- Property svn:ignore
-
old new 3 3 *.resharper 4 4 *.suo 5 *.user 5 6 *.vsp 6 7 Doxygen 8 FxCopResults.txt 7 9 Google.ProtocolBuffers-0.9.1.dll 8 10 HeuristicLab 3.3.5.1.ReSharper.user
-
- Property svn:mergeinfo changed
- Property svn:ignore
-
branches/HeuristicLab.Hive.Azure/HeuristicLab.MainForm/3.3/HeuristicLab.MainForm-3.3.csproj
r6866 r7669 116 116 <None Include="Plugin.cs.frame" /> 117 117 <Compile Include="Interfaces\IConfigureableView.cs" /> 118 <Compile Include="Interfaces\IProgress.cs" /> 119 <Compile Include="Interfaces\IProgressReporter.cs" /> 118 120 <Compile Include="Plugin.cs" /> 121 <Compile Include="Progress.cs" /> 119 122 <Compile Include="ViewAttribute.cs" /> 120 123 <Compile Include="Interfaces\IContentView.cs" /> -
branches/HeuristicLab.Hive.Azure/HeuristicLab.MainForm/3.3/MainFormManager.cs
r7270 r7669 118 118 } 119 119 120 //check interfaces 121 IEnumerable<Type> nonInheritedInterfaces = type.GetInterfaces().Where(i => !i.IsAssignableFrom(type.BaseType)); 122 List<Type> defaultViewList = new List<Type>(); 123 foreach (Type defaultContentType in defaultViews.Keys) { 124 if (nonInheritedInterfaces.Contains(defaultContentType) || nonInheritedInterfaces.Any(i => i.CheckGenericTypes(defaultContentType))) 125 defaultViewList.Add(defaultViews[defaultContentType]); 126 } 127 128 //return only most spefic view as default view 129 foreach (Type viewType in defaultViewList.ToList()) { 130 if (defaultViewList.Any(t => t.IsSubclassOf(viewType))) 131 defaultViewList.Remove(viewType); 132 } 133 134 if (defaultViewList.Count == 1) 135 return TransformGenericTypeDefinition(defaultViewList[0], contentType); 136 else if (defaultViewList.Count > 1) 137 throw new InvalidOperationException("Could not determine which is the default view for type " + contentType.ToString() + ". Because more than one implemented interfaces have a default view."); 120 //check interfaces hierarchy of implemented and not inherited interfaces 121 var nonInheritedInterfaces = type.GetInterfaces().Where(i => !i.IsAssignableFrom(type.BaseType)); 122 var interfaces = new HashSet<Type>(nonInheritedInterfaces); 123 124 while (interfaces.Any()) { 125 interfaces.RemoveWhere(i => interfaces.Any(x => x.GetInterfaces().Contains(i))); 126 127 List<Type> defaultViewList = (from defaultContentType in defaultViews.Keys 128 where interfaces.Contains(defaultContentType) || 129 interfaces.Any(i => i.CheckGenericTypes(defaultContentType)) 130 select defaultViews[defaultContentType]).ToList(); 131 132 //return only most spefic view as default view 133 foreach (Type viewType in defaultViewList.ToList()) { 134 if (defaultViewList.Any(t => t.IsSubclassOf(viewType))) 135 defaultViewList.Remove(viewType); 136 } 137 138 if (defaultViewList.Count == 1) 139 return TransformGenericTypeDefinition(defaultViewList[0], contentType); 140 else if (defaultViewList.Count > 1) 141 throw new InvalidOperationException("Could not determine which is the default view for type " + contentType.ToString() + ". Because more than one implemented interfaces have a default view."); 142 143 interfaces = new HashSet<Type>(interfaces.SelectMany(i => i.GetInterfaces())); 144 } 138 145 139 146 type = type.BaseType;
Note: See TracChangeset
for help on using the changeset viewer.