以编程方式重命名或排除C#类和方法

时间:2013-03-05 18:00:51

标签: c# code-generation

我正在编写一个使用SharpKit的HTML解析器,它输出到Javascript;但是也希望在CsQuery中运行相同的代码,它会输出一个二进制文件。

我对SharpKit 几乎的代码可以直接在CsQuery中使用,但不完全如下:

  • 必须更改名称空间,并相应地更改功能/类名称。
  • 我还有几个类在Sharpkit中模拟.NET类,我根本不需要在CsQuery代码中。

我希望能够通过以编程方式执行这些更改来保持我的代码同步。这可能吗?解决方案here太旧了,无法使用C#4.0,但我觉得Rosalyn应该能够做到这一点。

1 个答案:

答案 0 :(得分:0)

您可以使用JsMethodAttribute重命名SharpKit中的方法:

[JsMethod(Name="doSomething")]
public void DoSomething(){}

您可以通过设置Export = false:

以相同的方式排除方法
[JsMethod(Export=false)]
public void DoSomething(){}

如果使用Clr模式(需要jsclr.js库),您应该能够使用完全相同的代码。或者通过使用本机Js和.NET方法,同时在JavaScript中扩展任何缺少的方法,例如,如果JavaScript没有String.StartsWith方法,您可以将其路由到不同的方法,或者使用扩展方法自己实现它

有关更多帮助和代码示例,请尝试使用SharpKit论坛: https://groups.google.com/forum/#!forum/sharpkit