我知道C#目前不支持这个,所以这更像是一个meta-C#问题。我一直在考虑语言中需要进行哪些更改才能让我们创建自己的命令,例如while
或using
。我可以创建一个接受Action
的方法,比如Task.Factory.StartNew()
,但是我需要在大括号周围使用括号,语法看起来不一样。
这实际上是否允许我们在括号外应用参数?
即
public void MyUsing (IDisposable disposable) Action body
{
try
{
body();
}
finally
{
disposable.Dispose();
}
}
for
,switch
和if
之类的命令因其语法而更难创建。
答案 0 :(得分:1)
我建议你看一下Roslyn项目(它本质上是一个用C#编写的开源C#编译器!)
他们还演示了添加语言功能是多么容易。
但请注意,除非您在C#团队工作,否则不太可能接受您的更改。如果你想为你生成代码,你可以看一下PostSharp,它与你的建议不一样,但它可能适合你的情况。
PostSharp允许您使用Attributes标记方法,属性,类等,然后触发用户定义的代码生成函数,这些函数将在初始编译过程之后运行。在您不想复制粘贴相同代码模式的情况下,它会有所帮助。