Ainda falando sobre o método Run With Elevated Privileges, o erro Cannot convert from ‘anonymous method’ to ‘Microsoft.SharePoint.SPSecurity.CodeToRunElevated’ ocorre frequentemente com os desenvolvedores. O problema geralmente se deve a uma chamada interna de return da função.
Exemplo:
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(web.Site.ID)
{
// seu código
return site;
}
});
A solução é simples retire as chamadas return de dentro do método RunWithElevatedPrivileges.
Modo correto:
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(web.Site.ID)
{
// seu código
}
});
return site;
A explicação técnica desse erro é devido ao fato do método RunWithElevatedPrivileges herdar a interface IDisposable(). Por isso a chamada de um return iria evitar a disposição do método e o método continuaria na memória podendo ocasionar problemas.