Il s'agit en fait d'une question en deux parties. Premièrement, est-ce que le HttpContext.Current correspond à l'objet System.UI.Page actuel ?
Et la deuxième question, qui est probablement liée à la première, est la suivante : pourquoi ne puis-je pas utiliser ce qui suit pour voir si la page actuelle implémente une interface :
private IWebBase FindWebBase()
{
if (HttpContext.Current as IWebBase != null)
{
return (IWebBase)HttpContext.Current.;
}
throw new NotImplementedException("Crawling for IWebBase not implemented yet");
}
Le contexte général est que certains contrôles ont besoin de savoir s'ils s'exécutent en tant que webpart SharePoint, ou en tant que partie d'un cadre Asp.Net.
J'ai résolu le problème en demandant au contrôle de passer une référence à lui-même, et en vérifiant la propriété Page du contrôle, mais je suis toujours curieux de savoir pourquoi ce qui précède ne fonctionne pas.
L'erreur du compilateur est : Impossible de convertir System.Web.HttpContext en ...IWebBase par le biais d'une conversion de référence, d'une conversion de type boxing, d'une conversion de type unboxing, d'une conversion de type wrapping ou d'une conversion de type null.