класс объекта dumper - PullRequest
       92

класс объекта dumper

49 голосов
/ 28 августа 2009

Я ищу класс, который может выводить объект и все его листовые значения в формате, подобном следующему:

User
  - Name: Gordon
  - Age : 60
  - WorkAddress
     - Street: 10 Downing Street
     - Town: London
     - Country: UK
  - HomeAddresses[0]
    ...
  - HomeAddresses[1]
    ...

(или более четкий формат). Это будет эквивалентно:

public class User
{
    public string Name { get;set; }
    public int Age { get;set; }
    public Address WorkAddress { get;set; }
    public List<Address> HomeAddresses { get;set; }
}

public class Address
{
    public string Street { get;set; }
    public string Town { get;set; }
    public string Country { get;set; }
}

Вид строкового представления элемента управления PropertyGrid, за исключением необходимости реализации большого набора конструкторов для каждого типа.

В PHP есть нечто, называемое var_dump . Я не хочу использовать часы, так как они предназначены для распечатки.

Может ли кто-нибудь указать мне на что-то подобное, если оно существует? Или напишите один для награды.

Ответы [ 12 ]

1 голос
/ 22 декабря 2010

Для большинства классов вы можете использовать DataContractSerializer

0 голосов
/ 26 мая 2019

Я только что натолкнулся на подобное требование в проекте Blazor и предложил следующий очень простой компонент для вывода данных объекта (и его дочерних объектов) на экран:

ObjectDumper.razor:

<code>@using Microsoft.AspNetCore.Components
@using Newtonsoft.Json

  <div>
    <button onclick="@DumpVMToConsole">@ButtonText</button>
    <pre id="json">@_objectAsJson
@functions { // Этот компонент позволяет легко визуализировать значения, хранящиеся в данный момент в // объект и его дочерние объекты. Добавьте этот компонент на страницу и передайте // параметр объекта для мониторинга, затем нажмите кнопку, чтобы увидеть данные объекта // как красиво отформатированный JSON // Используем так: [Параметр] закрытый объект ObjectToDump {get; задавать; } [Параметр] приватная строка ButtonText {get; задавать; } = "Показать данные объекта"; строка _buttonText; string _objectAsJson = ""; public void DumpVMToConsole () { _objectAsJson = GetObjectAsFormattedJson (ObjectToDump); ЕЫпе (_objectAsJson); } открытая строка GetObjectAsFormattedJson (объектный объект) { return JsonConvert.SerializeObject ( значение: объект, форматирование: Formatting.Indented, настройки: новый JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.Objects }); } }

Затем вставьте это где-нибудь на странице Blazor следующим образом:

<ObjectDumper ObjectToDump="@YourObjectToVisualise" />

После чего отображается кнопка, которую можно нажать, чтобы увидеть текущие значения связанного объекта:

enter image description here

Я вставил это в репозиторий GitHub: tomRedox / BlazorObjectDumper

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...