Tôi có đoạn mã sau:Unity.ResolutionFailedException - Nghị quyết của sự phụ thuộc không
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));
}
và cấu hình:
<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>
Tôi nhận được ngoại lệ sau đây:
Microsoft.Practices.Unity.ResolutionFailedException: Nghị quyết của phụ thuộc thất bại, type = "ADTrader.Core.Contracts .ITraderProvider ", tên =" ". Thông báo ngoại lệ là: Hoạt động xây dựng hiện tại (xây dựng khóa Xây dựng chính [ADTrader.MbTradingProvider.MBTradingProvider, null]) không thành công: Đã cố gắng đọc hoặc ghi bộ nhớ được bảo vệ. Đây thường là dấu hiệu mà bộ nhớ khác bị hỏng. (Chiến lược loại BuildPlanStrategy, chỉ số 3) ---> Microsoft.Practices.ObjectBuilder2.BuildFailedException: Dòng điện xây dựng hoạt động (xây dựng chìa khóa xây dựng Key [ADTrader.MbTradingProvider.MBTradingProvider, null]) thất bại: cố gắng để đọc hoặc ghi bộ nhớ được bảo vệ. Đây thường là dấu hiệu mà bộ nhớ khác bị hỏng. (Loại chiến lược BuildPlanStrategy, index 3) ---> System.AccessViolationException: Đã cố gắng đọc hoặc ghi bộ nhớ được bảo vệ. Đây thường là dấu hiệu mà bộ nhớ khác bị hỏng. tại MBTCOMLib.MbtComMgrClass.EnableSplash (Boolean bEnable) tại ADTrader.MbTradingProvider.MBTradingProvider..ctor() tại BuildUp_ADTrader.MbTradingProvider.MBTradingProvider (IBuilderContext) tại Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlan.BuildUp (IBuilderContext ngữ cảnh) tại Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp (IBuilderContext ngữ cảnh) tại Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp (IBuilderContext ngữ cảnh) --- End của nội ngoại lệ stack trace --- tại Microsoft.Practices. ObjectBuilder2.StrategyChain.ExecuteBuildUp (IBuilderContext ngữ cảnh) tại Microsoft.Practices.ObjectBuilder2.Builder.BuildUp (IReadWriteLocator locator, ILifetimeContainer đời, chính sách IPolicyList, chiến lược IStrategyChain, Object buildKey, Object hiện có) tại Microsoft.Practices.Unity.UnityContainer.DoBuildUp (Type t, Object hiện có, Tên chuỗi) --- Kết thúc dấu vết ngăn xếp ngoại lệ bên trong ---
tại Microsoft.Practices.Unity.UnityContainer.DoBuildUp (Loại t, Object hiện tại, Tên chuỗi) tại Microsoft.Practices.Unity.UnityContainer.Resolve (Loại t, Tên chuỗi) tại Microsoft.Practices.Unity.UnityContainerBase.ResolveT tại ADTrader.Engine.EngineFactory.CreateEngine()
Bất kỳ ý tưởng nào?