我正在输出System.Collections.Generic.List而不是数据



\编辑了在 sb 处获得异常的代码。附录("允许前缀:"(行 系统核心中发生类型为"System.ArgumentNullException"的异常.dll但未在用户代码中处理

公共分部类索引策略:IEquatable

{
public IndexingPolicy(List<string> allowPrefixes = default(List<string>), List<string> denyPrefixes = default(List<string>), bool? disableIndexing = default(bool?))
{
this.AllowPrefixes = allowPrefixes;
this.DenyPrefixes = denyPrefixes;
this.DisableIndexing = disableIndexing;
}

[DataMember(Name="allowPrefixes", EmitDefaultValue=false)]
public List<string> AllowPrefixes { get; set; }

[DataMember(Name="denyPrefixes", EmitDefaultValue=false)]
public List<string> DenyPrefixes { get; set; }

[DataMember(Name="disableIndexing", EmitDefaultValue=false)]
public bool? DisableIndexing { get; set; }

").Append(DisableIndexing).Append("n");
public override string ToString()
{
var sb = new StringBuilder();
sb.Append("class IndexingPolicy {n");
sb.Append(" AllowPrefixes: ").Append(
string.Join(",", AllowPrefixes.ToList())
).Append("n");

sb.Append(" DenyPrefixes: ").Append(
string.Join(",", DenyPrefixes.ToList())
).Append("n");
sb.Append("  DisableIndexing: ").Append(DisableIndexing).Append("n");
sb.Append("}n");
return sb.ToString();
}

问题是默认的 ToString(( 函数只描述类(在本例中为System.Collections.Generic.List1[System.String]'(。 若要获取字符串,必须以某种方式覆盖该字符串,或将列表内容转换为要查找的字符串。

我喜欢使用字符串。Join(( 用于这种情况。

public override string ToString()
{   
var sb = new StringBuilder();    
sb.Append("class IndexingPolicy {n");    
sb.Append(" AllowPrefixes: ").Append(
string.Join(",", AllowPrefixes.ToList())
).Append("n");
sb.Append(" DenyPrefixes: ").Append(
string.Join(",", DenyPrefixes.ToList())
).Append("n");
sb.Append(" DisableIndexing: ").Append(
string.Join(","< DisableIndexing.ToList())
).Append("n");
sb.Append("}n");
return sb.ToString();
}

。作为旁注,我发现使用带有字符串的数组。Join 比使用字符串生成器"更干净",但性能同样高。

public override string ToString()
{   
var response = new List<string>() {
"class IndexingPolicy {",
$" AllowPrefixes: {string.Join(",", AllowPrefixes.ToList())}",   
$" DenyPrefixes: {string.Join(",", DenyPrefixes.ToList())}",    
$" DisableIndexing: {string.Join(",", DisableIndexing.ToList())}",
"}",
""
return string.Join(Environment.NewLine, response);
}

。如果使用,请使用扩展方法进行连接:

public static string Join(this IEnumerable @this, string connector)
=> string.Join(connector, @this.ToList());

它变得更漂亮了:

public override string ToString()
{   
var response = new List<string>() {
"class IndexingPolicy {",
$" AllowPrefixes: {AllowPrefixes.Join(",")}",   
$" DenyPrefixes: {DenyPrefixes.Join(",")}",    
$" DisableIndexing: {DisableIndexing.Join(",")}",
"}",
""
return string.Join(Environment.NewLine, response);
}

最新更新