2017-02-10 65 views
0

我正在爲將來的ASP.Net項目編寫各種類庫(工具和幫助器)。HttpContext.GetGlobalResourceObject不存在於類庫

現在我的解決方案沒有web項目,但它不應該是一個問題。 我添加了引用到System.Web到項目,現在我能夠訪問代碼中的HttpContext。

下面我爲資源管理器類別代碼的假設得到應用全球資源:

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Web; 

namespace ResourceManager 
{ 
    public class ResourceManager : IResourceManager 
    { 
     HttpContext context; 

     public ResourceManager(HttpContext ctx) 
     { 
      context = ctx; 
     } 

     public string GetError(string key) 
     { 
      return context.GetGlobalResourceObject("Errors", key).ToString(); 
     } 

     //And so on........ 
    } 
} 

但不幸的是的Visual Studio智能感知無法找到GetGlobalResourceObject

打到F12我可以看到這個靜態函數裏面的HttpContext類。

運行構建之後我收到此錯誤信息:

會員「HttpContext.GetGlobalResourceObject(字符串,字符串)」不能用實例引用訪問;用類型名稱代替它

這是奇怪的行爲,對我來說很有趣,爲什麼會發生。

感謝您的幫助

回答

1

這是未經測試,但是從錯誤信息,我認爲使用應該是如下。

本質上你只是使用靜態HttpContext而不是創建它的一個實例。

using System.Web; 

namespace ResourceManager 
{ 
    public class ResourceManager : IResourceManager 
    { 
     public string GetError(string key) 
     { 
      return HttpContext.GetGlobalResourceObject("Errors", key).ToString(); 
     } 

     //And so on........ 
    } 
} 
+0

我不在web項目,所以我不能引用HttpContext而不從外部獲取它。這是一個不瞭解ASP.Net應用程序的類庫項目。 –

+0

但是你有一個對System.Web的引用,所以你應該仍然可以使用靜態HttpContext,就像錯誤消息指示你要做的那樣。 –

+0

它不起作用。嘗試將我的代碼複製到新的類庫項目,並嘗試構建... –

相關問題