Нет эквивалента тому, что вы говорите о Java и Eclipse.
@ RawitasKrungkaew ответ - это хорошо.
Если вы не хотите использовать JSON, вы можете использовать рефлексию сметод расширения для повторного использования:
В некотором классе
public override string ToString()
{
return this.GetPropertiesAsText();
}
PropertiesListerHelper.cs
using System.Reflection;
static public class PropertiesListerHelper
{
static private bool IsProcessing;
static public string GetPropertiesAsText(this object instance)
{
if ( IsProcessing )
return $"<Reentrancy in {instance.GetType().Name}.ToString()>";
IsProcessing = true;
try
{
string result = "";
var list = instance.GetType().GetProperties().OrderBy(item => item.Name);
foreach ( var property in list )
{
var value = property.GetValue(instance);
result += $"{property.Name} = {(value == null ? "<null>" : value)}, ";
}
return result.TrimEnd(", ".ToArray());
}
catch ( Exception ex )
{
return $"<Exception in {instance.GetType().Name}.ToString(): {ex.Message}>";
}
finally
{
IsProcessing = false;
}
}
}
Так чтоповедение работает, даже если дизайн класса меняется.
Вы можете адаптировать метод для форматирования вывода по своему усмотрению, например:
foreach ( var property in list )
{
var value = property.GetValue(instance);
result += $"{property.Name} = {(value == null ? "<null>" : value)}"
+ Environment.NewLine;
}
return result.TrimEnd(Environment.NewLine.ToArray());
Управление случаем повторного входа может бытьулучшено, потому что это может вызвать переполнение стека в формах, например.