首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试着抓住最后的包装器

试着抓住最后的包装器
EN

Stack Overflow用户
提问于 2014-10-08 00:01:37
回答 2查看 414关注 0票数 1

如何简化此代码,但保留现有功能:

代码语言:javascript
复制
var i = new Impersonation();
if (i.ImpersonateValidUser())
{
    try
    {
        //privileged code goes here.
    }
    catch (Exception ex)
    {
        throw;
    }
    finally
    {
        i.UndoImpersonation();
    }
}
else
{
    throw new Exception("Impersonation failed.");
}

与此类似的东西:

代码语言:javascript
复制
using(var i = new Impersonation())
{
    //privileged code goes here.
}

特权代码可以是一行或多行。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-08 00:38:22

您可能不知道的IDisposable模式的另一种选择:

代码语言:javascript
复制
Impersonate(() =>
{
   //privileged code goes here.
});

执行情况:

代码语言:javascript
复制
void Impersonate(Action action) 
{
    if (i.ImpersonateValidUser())
    {
        try
        {
            action();
        } 
        finally
        {
            i.UndoImpersonation();
        }
    }
    else 
    { 
        throw new Exception("Impersonation failed."); 
    }
}
票数 4
EN

Stack Overflow用户

发布于 2014-10-08 00:03:22

Impersonation实现IDisposable,然后将UndoImpersonation()移动到Dispose()

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26247194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档