2016-07-14 4 views
1

私はリポジトリパターンを使用するMVCプロジェクトを持っています。私はまた、IOCコンテナにNinjectを使用しています。私は問題が発生しているが、プロジェクトがロードされたときにキャッシュされた値を保存することになります。IOCデータアクセスで静的メソッドを使用する

私が持っている私のGlobal.asax.csで

...(some settings) 
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory()); 
.... 
...CustomDataCache.Configure(); 

と私ControllerFactoryに私は私が必要なバインディングを持っている:

_ninjectKernal.Bind<IDataContext>().To<DataContext>() 
      .WithConstructorArgument("appNamekey", "Name of Data Application") 
      .WithConstructorArgument("serverLocationNameKey", "Location of Application Server"); 

と私のCustomCacheクラスで私のような何かをしたいです:

グローバルからConfigure()を静的に呼び出すとしますが、必要なときにどのようにしますかDataContextのインスタンス?

おかげで、

+5

何を達成したい、そしてなぜか...「私は設定を()静的呼び出したい」説明してくださいにアクセスする必要がありますか? 'Configure'を静的メソッドにしたいので、インスタンスなしで呼び出すことができますか?その場合、Global.asaxはあなたのコンテキストを設定するために間違った方法だと思われます。コンテキストも静的でなければならないので、静的な値はすべてのユーザーで共有されます。すべてのユーザーに対して、すべての要求に対してコンテキストを上書きします。それは間違っているか無駄だと思われます。そして、その場合、あなたは静的に** IOC **を使うことのメリットはありません。 –

答えて

0

なぜあなたConfigure方法でパラメータとしてカテゴリに渡していませんか?

+0

これをGLobal.asaxに入れると、null参照例外が発生します。 var categories = _context.GetNdecCategories(); – GrahamJRoy

1

解決される依存関係はさまざまです。 MVC

のためにWebフォーム用 ...

Public Class _Default 
    Inherits Page 

    <Dependency()> 
    Public Property _userService As IUserService 

public UserController(IDataContextAsync context) 

現実には、あなたのwebアプリケーションから直接あなたのDataContextにアクセスする必要はありません。あなたのコンストラクタでIDataContextAsyncのセットアップを持っているサービス...

Public Class UserService 
    Inherits Service(Of User) 
    Implements IUserService 

    Private ReadOnly _repository As IRepositoryAsync(Of User) 

    Public Sub New(repository As IRepositoryAsync(Of User)) 
     MyBase.New(repository) 
     _repository = repository 
    End Sub 
関連する問題