Company      |       Articles & Research      |      Services      |      Software      |      Contact

Take Advantage of Lambdas with RunWithElevatedPrivileges

375px Lambda lc.svg Take Advantage of Lambdas with RunWithElevatedPrivileges

One of the compelling features in C# 3.0 is the presentation of lambda expressions, cultivated out of the anonymous delegate (type-safe function pointers) support (don’t need to define a method somewhere else) that was present in C# 2.0. A lambda expression organizes with a left side composed of the arguments and a right expression which is the body of the method, split with a “=>”.

In the context of SPSecurity.RunWithElevatedPrivileges to encourage execution of a method with Full Control rights, it is common to see it as an anonymous method. For example, when using the SPUtility.SendEmail method it is ordinary to elevate rights. Using pre C# 3.0 mechanisms this would normally take on the form:

C#:
  1. SPSecurity.RunWithElevatedPrivileges(delegate
  2. {
  3. SPUtility.SendEmail(SPContext.Current.Site.OpenWeb(), false, false, "no_reply@sharepointsecurity.com", "this is my subject", "this is my body");
  4. });

This is a fair amount of real estate on the code surface. Wouldn’t it be nicer if we introduced a little bit of syntax sugar to tidy it up? This is where lambda expressions are accommodating. Taking the above method, this instead takes on the form:

C#:
  1. SPSecurity.RunWithElevatedPrivileges(() => SPUtility.SendEmail(SPContext.Current.Site.OpenWeb(), false, false, "no_reply@sharepointsecurity.com", "this is my subject", "this is my body"));

This is much cleaner, and required less typing!

share save 171 16 Take Advantage of Lambdas with RunWithElevatedPrivileges

Related posts:

  1. Elevated Code In SharePoint Workflows
  2. Fixing Access Denied Errors With SharePoint 2010 Timer Jobs
  3. PrincipalContext Objects And Performance
  4. AccountManagement, PrincipalContext, Principals, And Performance
  5. Remember to Elevate For Event Log Entries

2 Comments »

  1. [...] Take Advantage of Lambdas with RunWithElevatedPrivileges [...]

    Pingback by Links (12/4/2008 « Steve Pietrek - Everything SharePoint) — December 4, 2008 @ 8:02 pm

  2. And if your function doesn’t have parameters, then just:
    SPSecurity.RunWithElevatedPrivileges(SendEmail);

    Comment by bungle — December 5, 2008 @ 2:05 am

RSS feed for comments on this post. TrackBack URL

Leave a comment