~halega/+junk/sharpdevelop

« back to all changes in this revision

Viewing changes to src/AddIns/Debugger/Debugger.AddIn/Visualizers/GridVisualizer/ValueProviders/GridValuesProvider.cs

  • Committer: sk
  • Date: 2011-09-10 05:17:57 UTC
  • Revision ID: halega@halega.com-20110910051757-qfouz1llya9m6boy
4.1.0.7915 Release Candidate 1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
 
2
// This code is distributed under the BSD license (for details please see \src\AddIns\Debugger\Debugger.AddIn\license.txt)
 
3
 
 
4
using System;
 
5
using System.Collections.Generic;
 
6
using Debugger.AddIn.Visualizers.Utils;
 
7
using Debugger.MetaData;
 
8
using ICSharpCode.NRefactory.Ast;
 
9
using System.Reflection;
 
10
 
 
11
namespace Debugger.AddIn.Visualizers.GridVisualizer
 
12
{
 
13
        /// <summary>
 
14
        /// Provides <see cref="ObjectValue"/>s to be displayed in Grid visualizer.
 
15
        /// Descandants implement getting values for IList and IEnumerable.
 
16
        /// </summary>
 
17
        public class GridValuesProvider
 
18
        {
 
19
                /// <summary> Used to quickly find MemberInfo by member name - DebugType.GetMember(name) uses a loop to search members </summary>
 
20
                protected Dictionary<string, MemberInfo> memberFromNameMap;
 
21
                
 
22
                protected Expression targetObject;
 
23
                protected DebugType itemType;
 
24
                
 
25
                public GridValuesProvider(Expression targetObject, DebugType itemType)
 
26
                {
 
27
                        this.targetObject = targetObject;
 
28
                        this.itemType = itemType;
 
29
                        
 
30
                        this.memberFromNameMap = this.GetItemTypeMembers().MakeDictionary(memberInfo => memberInfo.Name);
 
31
                }
 
32
                
 
33
                /// <summary>
 
34
                /// Gets members that will be displayed as columns.
 
35
                /// </summary>
 
36
                public IList<MemberInfo> GetItemTypeMembers()
 
37
                {
 
38
                        var publicPropetiesAndFields = itemType.GetFieldsAndNonIndexedProperties(BindingFlags.Public | BindingFlags.Instance);
 
39
                        return publicPropetiesAndFields;
 
40
                }
 
41
        }
 
42
}