I have the following code:
public static IEngine CreateEngine() { UnityContainer container = Unity.LoadUnityContainer(DefaultStrategiesContainerName); IEnumerable<IStrategy> strategies = container.ResolveAll<IStrategy>(); ITraderProvider provider = container.Resolve<ITraderProvider>(); return new Engine(provider, new List<IStrategy>(strategies)); }
and config:
<unity> <typeAliases> <typeAlias alias="singleton" type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager, Microsoft.Practices.Unity" /> <typeAlias alias="weakRef" type="Microsoft.Practices.Unity.ExternallyControlledLifetimeManager, Microsoft.Practices.Unity" /> <typeAlias alias="Strategy" type="ADTrader.Core.Contracts.IStrategy, ADTrader.Core" /> <typeAlias alias="Trader" type="ADTrader.Core.Contracts.ITraderProvider, ADTrader.Core" /> </typeAliases> <containers> <container name="strategies"> <types> <type type="Strategy" mapTo="ADTrader.Strategies.ThreeTurningStrategy, ADTrader.Strategies" name="1" /> <type type="Trader" mapTo="ADTrader.MbTradingProvider.MBTradingProvider, ADTrader.MbTradingProvider" /> </types> </container> </containers></unity>
I get the following exception:
Microsoft.Practices.Unity.ResolutionFailedException: permission dependency error, type = "ADTrader.Core.Contracts.ITraderProvider", name = "". Exception message: current build operation (build key creation key [ADTrader.MbTradingProvider.MBTradingProvider, null]) failed: attempt to read or write protected memory. It is often that other memory is corrupted. (Strategy type BuildPlanStrategy, index 3) ---> Microsoft.Practices.ObjectBuilder2.BuildFailedException: current build operation (build key Build Key [ADTrader.MbTradingProvider.MBTradingProvider, null]) failed: Attempted to read or write protected memory. It is often that other memory is corrupted. (Strategy type BuildPlanStrategy, index 3) ---> System.AccessViolationException: Attempted to read or write protected memory. It is often that other memory is corrupted. in MBTCOMLib.MbtComMgrClass.EnableSplash (Boolean bEnable) in ADTrader.MbTradingProvider.MBTradingProvider..ctor () in BuildUp_ADTrader.MbTradingProvider.MBTradingProvider (IBuilderContext) in Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlan.BuildUp (IBuilderContext context) in Microsoft.Practices.ObjectBuilder2 .BuildPlanStrategy.PreBuildUp (IBuilderContext context) in Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp (IBuilderContext context) --- End of the internal exception stack trace - at Microsoft.Practices.ObjectBuilderExPuteChuctu IBecuctu IBecuctu IBecucte IBecuctu IBecuctu ObjectBuilder2.Builder.BuildUp (IReadWriteLocator locator, ILifetimeContainer lifetime, IPolicyList policies, IStrategyChain policies, Object buildKey, Object existing) with Microsoft.Practices.Unity.UnityContainer.DoBuildUp (Type t, Object existing, String name) --- End of inner stack trace ---
at Microsoft.Practices.Unity.UnityContainer.DoBuildUp (Type t, Object existing, String name) at Microsoft.Practices.Unity.UnityContainer.Resolve (Type t, string name) at Microsoft.Practices.Unity.UnityContainerBase.ResolveT at ADTrader. Engine.EngineFactory.CreateEngine ()
Any idea?
c # unity-container
Alon ashkenazi
source share