在C#中创建类似于using的命令

时间:2014-12-13 21:14:11

标签: c#

我知道C#目前不支持这个,所以这更像是一个meta-C#问题。我一直在考虑语言中需要进行哪些更改才能让我们创建自己的命令,例如whileusing。我可以创建一个接受Action的方法,比如Task.Factory.StartNew(),但是我需要在大括号周围使用括号,语法看起来不一样。

这实际上是否允许我们在括号外应用参数?

public void MyUsing (IDisposable disposable) Action body
{
    try
    {
        body();
    }
    finally
    {
        disposable.Dispose();
    }
}

forswitchif之类的命令因其语法而更难创建。

1 个答案:

答案 0 :(得分:1)

我建议你看一下Roslyn项目(它本质上是一个用C#编写的开源C#编译器!)
他们还演示了添加语言功能是多么容易。

https://roslyn.codeplex.com/

但请注意,除非您在C#团队工作,否则不太可能接受您的更改。如果你想为你生成代码,你可以看一下PostSharp,它与你的建议不一样,但它可能适合你的情况。

http://www.postsharp.net/

PostSharp允许您使用Attributes标记方法,属性,类等,然后触发用户定义的代码生成函数,这些函数将在初始编译过程之后运行。在您不想复制粘贴相同代码模式的情况下,它会有所帮助。