DisposableAction и Marshal.ReleaseComObject - PullRequest
3 голосов
/ 14 марта 2012

выполняет какое-то служебное взаимодействие, и код имеет тип

            try
            {
                selection = getSelected(Return.Some.Office.InteropObject);
                for ( int i = 0 ; i < selection.count ; i++)
                    yield return selection.item(i)
            }
            finally
            {
                Marshal.ReleaseComObject(selection);
            }

Хотите знать, если это хорошая идея, заменить его на DisposableAction и изменить на

         using ( var a = new DisposableAction(getSelected(Return.Some.Office.InteropObject)) )
         {
              foreach(var b in a.Items)
                yield return b;
         }
...