我想为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,该锁在释放时将释放该锁。

09-25 20:44