Я не знаю, было ли это сделано, но интерфейсы Fluent потрясающие ... вот вам базовая реализация.
public static class SvgLineHelper {
public static SvgLine SvgLine(this HtmlHelper helper, string name) {
return new SvgLine(name);
}
}
public class SvgLine {
string _name;
int _x;
int _y;
int _width;
int _height;
IList<string> _styles;
public SvgLine(string name) {
_styles = new List<string>();
_name = name;
}
public static SvgLine Create(string name) {
return new SvgLine(name);
}
public SvgLine X(int x) {
this._x = x;
return this;
}
public SvgLine Width(int width) {
this._width = width;
return this;
}
public SvgLine Style(string style) {
this._styles.Add(style);
return this;
}
public override string ToString() {
//create your string from this object here
return string.Format("x:{0}, width:{1}, style:{2}", _x, _width, _styles[0]);
}
}
А вот как вы используете его в своем HTML
<% Html.SvgLine("test").X(100).Width(50).Style("stroke-width:2px").ToString() %>
Вы должны вызвать метод tostring как последний вызов (или другой метод, который завершает ваш свободный интерфейс - тот, который возвращает строковое представление вашего объекта)