maf*_*afu 34 .net c# properties tostring
想象一下有很多公共财产的班级.出于某种原因,不可能将此类重构为较小的子类.
我想添加一个ToString覆盖,返回以下内容:
Property 1: Value of property 1\n Property 2: Value of property 2\n ...
有没有办法做到这一点?
Oli*_*ver 79
我想你可以在这里使用一点反思.看看Type.GetProperties()
.
private PropertyInfo[] _PropertyInfos = null;
public override string ToString()
{
if(_PropertyInfos == null)
_PropertyInfos = this.GetType().GetProperties();
var sb = new StringBuilder();
foreach (var info in _PropertyInfos)
{
var value = info.GetValue(this, null) ?? "(null)";
sb.AppendLine(info.Name + ": " + value.ToString());
}
return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)
Pan*_*ood 24
@Oliver作为扩展方法的答案(我认为很适合)
public static string PropertyList(this object obj)
{
var props = obj.GetType().GetProperties();
var sb = new StringBuilder();
foreach (var p in props)
{
sb.AppendLine(p.Name + ": " + p.GetValue(obj, null));
}
return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)