|
#region Copyright
// Diagnostic Explorer, a .Net diagnostic toolset
// Copyright (C) 2010 Cameron Elliot
//
// This file is part of Diagnostic Explorer.
//
// Diagnostic Explorer is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Diagnostic Explorer is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with Diagnostic Explorer. If not, see <http://www.gnu.org/licenses/>.
//
// http://diagexplorer.sourceforge.net/
#endregion
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
namespace DiagnosticExplorer
{
internal class ExtendedPropertyGetter : PropertyGetter
{
private string _name;
public ExtendedPropertyGetter(PropertyInfo info, ExtendedPropertyAttribute attr)
: base(info)
{
_name = attr.Name ?? info.Name;
}
public override IEnumerable<Property> GetProperties(object obj)
{
object val = prop.GetValue(obj, null);
if (val == null)
{
foreach (Property p in GetBaseProperties(obj))
yield return p;
}
else
{
List<PropertyGetter> getters = DiagnosticManager.GetPropertyGetters(val, _name);
foreach (PropertyGetter getter in getters)
{
foreach (Property p in getter.GetProperties(val))
{
yield return p;
}
}
}
}
private IEnumerable<Property> GetBaseProperties(object obj)
{
return base.GetProperties(obj);
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I am a software developer originally from Auckland, New Zealand. I have lived and worked in London since 2005.