2017-02-10 13 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

それは動作しません。私のコードを新しいクラスライブラリプロジェクトにコピーしてビルドしようとしてください... –

関連する問題