\编辑了在 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.List
1[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);
}