1

どこでも Windsor を使用する MVC アプリケーションがあり、Windsor Castle ではどこでも正常に動作しますが、新しいコードを追加すると正しく動作しません。次のコードを使用して Castle を構成しました。

   public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.Register(Component.For<IFileUploadService>().ImplementedBy<FileUploadService>().DependsOn(Parameter.ForKey("x").Eq(
            "test")).LifeStyle.PerWebRequest);
    }

FileUploadService は次のように定義されています。

  public class FileUploadService : IFileUploadService
{



            public FileUploadService(string x)
    {
      // use x        
    }
 }

インストーラー行が呼び出していることは確かです (Debug は、アプリケーションの開始時に行が実行されていることを示しています。

次のように定義されたコントローラーがあります。

   public FileUploadController(IConfiguration Configuration, IFileUploadService fileUploadService)
    {
        this.Configuration = Configuration;
        this.fileUploadService = fileUploadService;
    }

このアプリケーションを実行すると、次のエラーが発生します。

   Can't create component 'FileUploadService' as it has dependencies to be satisfied. 
   FileUploadService is waiting for the following dependencies: 

    Keys (components with specific keys)
    - x which was not registered.

何が問題ですか?私は彼らが働いている同様のコードを持っています。

4

1 に答える 1

1

問題が見つかりました: 上記のコードは Windsor 3.x で動作しますが、私のアプリケーションは 2.5 を使用しています。バージョン 2.5 でこれを行う正しい方法は次のとおりです。

  container.Register(Component.For<IFileUploadService>().ImplementedBy<FileUploadService>().Parameters(Parameter.ForKey("x").Eq(
        "test")).LifeStyle.PerWebRequest);
于 2012-06-08T13:49:32.380 に答える