2012-04-04 38 views
0

我試圖在OpenRasta中使用StructureMap。我的Configuration類實現IDependencyResolverAccessor。這裏是我的代碼來配置容器:使用StructureMap的OpenRasta DI問題

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 

我想也許我缺少一個註冊?我可能會做其他事情嗎?

謝謝,

+0

我不知道這是否有幫助,但我在Visual Studio(Cassini)Web服務器上運行。 – 2012-04-05 14:02:54

回答

0

看來,我是,事實上,錯過了註冊。將此行添加到容器配置似乎已解決問題:

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

我不完全瞭解OR如何使用TraceSource,但現在,我將開始工作!