This is actually a two part question. First,does the HttpContext.Current correspond to the current System.UI.Page object?
And the second question, which is probably related to the first, is why can't I use the following to see if the current page implements an interface:
private IWebBase FindWebBase()
{
if (HttpContext.Current as IWebBase != null)
{
return (IWebBase)HttpContext.Current.;
}
throw new NotImplementedException("Crawling for IWebBase not implemented yet");
}
The general context is that some controls need to know whether they are executing as a SharePoint webpart, or as part of an Asp.Net framework.
I have solved the problem by requiring the control to pass a reference to itself, and checking the Page property of the control, but I'm still curious why the above does not work.
The compiler error is: Cannot convert System.Web.HttpContext to ...IWebBase via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion or null type conversion.
No, from MSDN on HttpContext.Current: "Gets or sets the HttpContext object for the current HTTP request."
In other words it is an HttpContext object, not a Page.
You can get to the Page object via HttpContext using:
Page page = HttpContext.Current.Handler as Page;
if (page != null)
{
// Use page instance.
}