W rzeczywistości jest to dwuczęściowe pytanie. Po pierwsze, czy HttpContext.Current odpowiada bieżącemu obiektowi System.UI.Page?
Drugie pytanie, które jest prawdopodobnie związane z pierwszym, brzmi: dlaczego nie mogę użyć poniższego, aby sprawdzić, czy bieżąca strona implementuje interfejs:
private IWebBase FindWebBase()
{
if (HttpContext.Current as IWebBase != null)
{
return (IWebBase)HttpContext.Current.;
}
throw new NotImplementedException("Crawling for IWebBase not implemented yet");
}
Ogólny kontekst jest taki, że niektóre kontrolki muszą wiedzieć, czy działają jako webpart programu SharePoint, czy jako część struktury Asp.Net.
Rozwiązałem problem, wymagając od formantu przekazania odwołania do siebie samego i sprawdzając właściwość Page formantu, ale nadal jestem ciekawy, dlaczego powyższe nie działa.
Błąd kompilatora to: Nie można przekonwertować System.Web.HttpContext na ... IWebBase poprzez konwersję referencji, konwersję pudełkową, konwersję rozpakowywania, konwersję zawijania lub konwersję typu null.