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)
5
using System.Collections.Generic;
6
using Debugger.AddIn.Visualizers.Utils;
7
using Debugger.MetaData;
8
using ICSharpCode.NRefactory.Ast;
9
using System.Reflection;
11
namespace Debugger.AddIn.Visualizers.GridVisualizer
14
/// Provides <see cref="ObjectValue"/>s to be displayed in Grid visualizer.
15
/// Descandants implement getting values for IList and IEnumerable.
17
public class GridValuesProvider
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;
22
protected Expression targetObject;
23
protected DebugType itemType;
25
public GridValuesProvider(Expression targetObject, DebugType itemType)
27
this.targetObject = targetObject;
28
this.itemType = itemType;
30
this.memberFromNameMap = this.GetItemTypeMembers().MakeDictionary(memberInfo => memberInfo.Name);
34
/// Gets members that will be displayed as columns.
36
public IList<MemberInfo> GetItemTypeMembers()
38
var publicPropetiesAndFields = itemType.GetFieldsAndNonIndexedProperties(BindingFlags.Public | BindingFlags.Instance);
39
return publicPropetiesAndFields;