我已经为链接调用定制了一个C#类来添加我的样式,但是当我第一次创建Style类的实例,然后使用链接调用时,它最后只显示第一个添加的样式.
以下是代码:
MyStyleBuilder:
namespace TestStyleBuilder
{
public struct MyStyleBuilder
{
private string stringBuffer;
public MyStyleBuilder AddLineColor(string value) => this.AddStyle("color", value);
public MyStyleBuilder AddLineDash(string value) => this.AddStyle("dash", value);
public MyStyleBuilder AddStyle(string prop, string value)
{
var style = $"{prop}:{value};";
stringBuffer += style;
return this;
}
public override string ToString()
{
return stringBuffer != null ? stringBuffer.Trim() : string.Empty;
}
}
}
测试:
using TestStyleBuilder;
// Output:
// color:color;dash:dash;
MyStyleBuilder builder1 = new MyStyleBuilder().AddLineColor("color").AddLineDash("dash");
Console.WriteLine(builder1.ToString());
// Output:
// color:color;
MyStyleBuilder builder2 = new MyStyleBuilder();
builder2.AddLineColor("color").AddLineDash("dash");
Console.WriteLine(builder2.ToString());
经过调试和跟踪,我发现MyStyleBuilder中添加了所有的样式,但当返回测试类时,只添加了一个样式.
我的猜测是,在第二个示例中,返回的This不等同于Builder2,这是导致此行为的原因.
然而,我不确定如何修改它以达到第二种方法中连续添加样式的预期效果.