นี่เป็นคำถามสองส่วน ขั้นแรก HttpContext.Current สอดคล้องกับวัตถุ System.UI.Page ปัจจุบันหรือไม่
และคำถามที่สองซึ่งอาจเกี่ยวข้องกับคำถามแรกคือเหตุใดฉันจึงไม่สามารถใช้สิ่งต่อไปนี้เพื่อดูว่าหน้าปัจจุบันใช้อินเทอร์เฟซ:
private IWebBase FindWebBase()
{
if (HttpContext.Current as IWebBase != null)
{
return (IWebBase)HttpContext.Current.;
}
throw new NotImplementedException("Crawling for IWebBase not implemented yet");
}
บริบททั่วไปคือการควบคุมบางอย่างจำเป็นต้องทราบว่าพวกเขากำลังดำเนินการเป็นส่วนเว็บของ SharePoint หรือเป็นส่วนหนึ่งของกรอบงาน Asp.Net
ฉันได้แก้ไขปัญหาโดยกำหนดให้การควบคุมส่งผ่านการอ้างอิงถึงตัวมันเองและตรวจสอบคุณสมบัติเพจของตัวควบคุม แต่ฉันยังคงสงสัยว่าทำไมข้างต้นไม่ได้ผล
ข้อผิดพลาดของคอมไพเลอร์คือ: ไม่สามารถแปลง System.Web.HttpContext เป็น ... IWebBase ผ่านการแปลงอ้างอิงการแปลงแบบมวยการแปลงแบบ unboxing การแปลงการตัดหรือการแปลงประเภท null