C#包装函数代理

时间:2016-03-18 05:43:33

标签: c# asp.net-mvc

我在整个应用程序中都有以下模式,使用模拟来创建服务器对象以检索数据。

public ActionResult Index(){
    Index model = new Index(); 

    using (new Impersonation("domain", "username", "password")){
            Server server = new Server("serverInstance"); 

            model.ApplicationList = server.GetApplications();
            model.Details = server.GetDetails(); 
    }
}

我想知道这是否可以转换为包装函数。所以它可以通过以下方式调用

SecureManager.PerformOperation("domain", "username", "password", server => server 
{
    server.GetApplications();
    server.GetDetails();
    ....
});

目标是仅在Impersonation块中使用Server对象。

1 个答案:

答案 0 :(得分:1)

是的,你可以这样做。

  Server leakedServer = null;
  SecureManager.PerformOperation("domain", "username", "password", 
      server => 
      {
         leakedServer = server;  
         ....
       });
  leakedServer.GetApplications();

但它不会真正解决“仅使用Impersonation块中的Server对象”,因为该对象很容易被“泄露”出lambda:

reachability.h