2011-01-23 13 views
0

に登録するには、ここで私はブートストラップでやろうとしていますものです:WPFプリズム:動的アセンブリからタイプをロードし、ユニティ・コンテナ

protected override void ConfigureContainer() 
    { 
      Assembly someAssembly = Assembly.LoadFile(@".\SomeServiceImplementationLib.dll"); 

      Type someServiceImplementationType = someAssembly .GetType(@"SomeServiceImplementation"); 

      Container.RegisterType<ISomeServiceType, someServiceImplementationType >(new ContainerControlledLifetimeManager()); 


     base.ConfigureContainer(); 
    } 

このdoesntのは、のために、「型または名前空間名が期待される」と言ってコンパイルsomeServiceImplementationType。しかし、実際にはそのタイプではありませんか?

基本的には、特定の条件が起動時に満たされ、ロードされたアセンブリをロードされたアセンブリからユニティコンテナに登録したい場合にのみ、特定のアセンブリをロードします。これを行う方法はありますか?

答えて

1

コンパイルタイプのジェネリックと実行時の入力を混同しています。

ジェネリックスはコンパイル時のことですが、リフレクションマジックを少しして、タイプが新しい汎用インスタンスを新規作成しない限り、...必要はありません。

Unityコンテナには、使いやすいRegisterType用の他の拡張機能があります。

Container.RegisterType(typeof(ISomeServiceType), someServiceImplementationType, new ContainerControlledLifetimeManager()) 
+0

AAAH:

は代わりに、単に非一般的な形式を呼びます!ありがとう、トン! – NVM

関連する問題