我想为c#编译器创建我的自定义语句,以生成try finally块。
就像lock语句一样。
例如
private readonly ReaderWriterLockSlim _lockObject
private void MyMethod()
{
MyWriteLock(lockObject)
{
}
}
private void MyMethod2()
{
MyReadLock(lockObject)
{
}
}
编译器应为我生成以下代码
private void MyMethod()
{
try
{
lockObject.EnterWriteLock();
.. statetments for the method
}
finally
{
_lockObject.ExitWriteLock();
}
}
private void MyMethod2()
{
try
{
lockObject.EnterReadLock();
.. statetments for the method
}
finally
{
_lockObject.ExitReadLock();
}
}
最佳答案
您无法在C#中创建自己的语句。您可以尝试/最接近的方法是using
语句:
using (lockObject.AcquireReadToken())
{
}
其中
AcquireReadToken()
将获取读锁,并返回IDisposable
,该锁在释放时将释放该锁。