C# 是否有用于.net的Css编写器?
我注意到微软已经实现了一个内部的CssTextWriterC# 是否有用于.net的Css编写器?,c#,.net,css,C#,.net,Css,我注意到微软已经实现了一个内部的CssTextWriter internal sealed class CssTextWriter : TextWriter { .... } 有没有为.net编写Css的工具 例如,我想编写如下代码: CssTextWriter writer = new CssTextWriter(textWriter); writer.WriteBeginCssRule("p"); writer.WriteAttribute("font-family", "Arial,
internal sealed class CssTextWriter : TextWriter
{
....
}
有没有为.net编写Css的工具
例如,我想编写如下代码:
CssTextWriter writer = new CssTextWriter(textWriter);
writer.WriteBeginCssRule("p");
writer.WriteAttribute("font-family", "Arial,Liberation Sans,DejaVu Sans,sans-serif");
writer.WriteEndCssRule();
上述代码将输出到流,如下所示:
p { font-family: Arial,Liberation Sans,DejaVu Sans,sans-serif; }
无圆点
看起来它可以完成任务,但是有点太多了,我只需要一个CLS
我包装了对内部Microsoft类的调用(是的,很淘气,它可能会在将来的.net版本中消失……)
公共类CssTextWriter
{
公共CssTextWriter(文本编写器)
{
if(writer==null)
{
抛出新的异常(“编写器”);
}
这个.Writer=Writer;
这是初始化();
}
///
///获取作者。
///
///
///作者。
///
公共文本编写器{get;private set;}
///
///获取或设置内部CSS文本编写器。
///
///
///内部CSS文本编写器。
///
私有对象InternalCssTextWriter
{
得到;
设置
}
public void writebegincsrule(字符串选择器)
{
this.InternalCssTextWriter.InvokeMethod(“WriteBeginCssRule”,new[]{selector});
}
公共无效writeedcsrule()
{
这个.InternalCssTextWriter.InvokeMethod(“writeendcsrule”);
}
public void WriteAttribute(字符串名称、字符串值)
{
this.InternalCssTextWriter.InvokeMethod(“WriteAttribute”,new[]{name,value},new Type[]{typeof(string),typeof(string)});
}
公共无效写入(字符串值)
{
this.InternalCssTextWriter.InvokeMethod(“Write”,new[]{value},new Type[]{typeof(string)});
}
public void WriteAttribute(HtmlTextWriterStyle键,字符串值)
{
this.InternalCssTextWriter.InvokeMethod(“WriteAttribute”,新对象[]{key,value},新类型[]{typeof(HtmlTextWriterStyle),typeof(string)});
}
私有void初始化()
{
Type internalType=typeof(System.Web.UI.htmltexwriter).Assembly.GetType(“System.Web.UI.CssTextWriter”);
ConstructorInfo-ctor=internalType.GetConstructors(BindingFlags.Instance | BindingFlags.Public)[0];
this.InternalCssTextWriter=ctor.Invoke(新[]{this.Writer});
}
}
我正在使用OpenXML定义的样式表,并将其转换为CSW。编写自己的样式表不会花费太长时间。当然,但我讨厌在别人以前可能已经这样做的情况下编写东西:)使用呢?哇,这看起来是一个很棒的库,感谢链接。
public class CssTextWriter
{
public CssTextWriter(TextWriter writer)
{
if (writer == null)
{
throw new ArgumentNullException("writer");
}
this.Writer = writer;
this.Initialize();
}
/// <summary>
/// Gets the writer.
/// </summary>
/// <value>
/// The writer.
/// </value>
public TextWriter Writer { get; private set; }
/// <summary>
/// Gets or sets the internal CSS text writer.
/// </summary>
/// <value>
/// The internal CSS text writer.
/// </value>
private object InternalCssTextWriter
{
get;
set;
}
public void WriteBeginCssRule(string selector)
{
this.InternalCssTextWriter.InvokeMethod("WriteBeginCssRule", new[] { selector });
}
public void WriteEndCssRule()
{
this.InternalCssTextWriter.InvokeMethod("WriteEndCssRule");
}
public void WriteAttribute(string name, string value)
{
this.InternalCssTextWriter.InvokeMethod("WriteAttribute", new[] { name, value }, new Type[] { typeof(string), typeof(string) });
}
public void Write(string value)
{
this.InternalCssTextWriter.InvokeMethod("Write", new[] { value }, new Type[] { typeof(string) });
}
public void WriteAttribute(HtmlTextWriterStyle key, string value)
{
this.InternalCssTextWriter.InvokeMethod("WriteAttribute", new object[] { key, value }, new Type[] { typeof(HtmlTextWriterStyle), typeof(string) });
}
private void Initialize()
{
Type internalType = typeof(System.Web.UI.HtmlTextWriter).Assembly.GetType("System.Web.UI.CssTextWriter");
ConstructorInfo ctor = internalType.GetConstructors(BindingFlags.Instance | BindingFlags.Public)[0];
this.InternalCssTextWriter = ctor.Invoke(new[] { this.Writer });
}
}