0

OpenRasta で StructureMap を使用しようとしています。私Configurationのクラスは を実装してIDependencyResolverAccessorいます。コンテナを構成するコードは次のとおりです。

container.Configure(x =>
     {
         x.For<IFileResourceRepository>().Use(
             r => new FileResourceSqlRepository(ConnectionString));
         x.For<ILog>().Use(l => new FileLog(LogFileName, _logLevel));
         x.For<ILogger>().Use<ProTeckLogger>();
         x.For<ILogger<CodecLogSource>>().Use<ProTeckLogger<CodecLogSource>>();
         x.For<ILogger<IOLogSource>>().Use<ProTeckLogger<IOLogSource>>();
         x.For<ILogger<OperationModelLogSource>>().Use<ProTeckLogger<OperationModelLogSource>>();
         x.For<ILogger<PipelineLogSource>>().Use<ProTeckLogger<PipelineLogSource>>();
         x.SetAllProperties(
             policy =>
             policy.Matching(
                 prop => (prop.PropertyType.IsAssignableFrom(typeof (ILogger)))));
         x.SetAllProperties(policy => policy.OfType<IFileResourceRepository>());
         x.SetAllProperties(policy => policy.OfType<ILog>());
         x.SetAllProperties(policy => policy.OfType<ILogger<CodecLogSource>>());
         x.SetAllProperties(policy => policy.OfType<ILogger<IOLogSource>>());
         x.SetAllProperties(policy => policy.OfType<ILogger<OperationModelLogSource>>());
         x.SetAllProperties(policy => policy.OfType<ILogger<PipelineLogSource>>());
     });

次のエラーが表示されます。

StructureMap Exception Code:  202
No Default Instance defined for PluginFamily System.Diagnostics.TraceSource, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

もしかして、登録漏れ?他に何か間違ったことをしている可能性がありますか?

ありがとう-

4

1 に答える 1

0

実際、私は登録を逃していたようです。この行をコンテナー構成に追加すると、問題が解決したようです。

 x.For<TraceSource>().Use(new TraceSource("OpenRasta"));

OR が TraceSource をどのように使用するかは完全には理解できませんが、とりあえず作業を行います。

于 2012-04-09T21:15:48.543 に答える