C# 是否有用于.net的Css编写器?

C# 是否有用于.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,

我注意到微软已经实现了一个内部的CssTextWriter

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 });
    }
}