Я использую Unity 2.1 в своем приложении и получаю сообщение об ошибке в заголовке для одного сценария разрешения. Я понятия не имею, где искать.
- Я использую Windows 7 64bit
- 32-разрядные приложения включены
- Пробовал сборку для "любого процессора" и "x64"
Похоже, проблема не связана с 64-битной архитектурой. Любая помощь будет принята с благодарностью!
Сценарий
//works: class = "ProductManager<Product>
Container.Resolve<IProductManager<Product>>()
//works: class = "OrderManager"
Container.Resolve<IOrderManager()
//works: class="OrderManager"
Container.Resolve<IOrderManager("OrderManager")
//DOESN'T WORK: EXCEPTION: BadImageFormatException
Container.Resolve<IOrderManager("OrderManager")
//works: class="GenericOrderManager<Order>" (obviously)
var manager = new GenericOrderManager<Order>();
Код
Unity.config
<alias name="IProductManager" type="Assembly1.Namespace.IProductManager`1" />
<alias name="ProductManager" type="Assembly2.Namespace.ProductManager`1" />
<alias name="IOrderManager" type="Assembly1.Namespace.IOrderManager" />
<alias name="OrderManager"
type="Assembly1.Namespace.OrderManager" />
<alias name="OrderManager"
type="Assembly1.Namespace.OrderManager"
name="OrderManager" />
<alias name="GenericOrderManager"
type="Assembly2.Namespace.GenericOrderManager`1"
name="GenericOrderManager" />
Менеджер продуктов + интерфейс
public interface IProductManager<TProduct> where TProduct : Product
{
}
public class ProductManager<TProduct> : IProductManager<TProduct> where TProduct : Product
{
}
Менеджер заказов + интерфейс
public interface IOrderManager
{
}
public class OrderManager : IOrderManager
{
}
public class OrderManager<TOrder> : OrderManager where TOrder : Order
{
}
Обновление с помощью StackTrace:
в System.Runtime.CompilerServices.RuntimeHelpers._CompileMethod(метод IRuntimeMethodInfo) в System.Reflection.Emit.DynamicMethod.CreateDelegate(Type delegateType) в Microsoft.Practices.ObjectBuilder2.DynamicBuildPlanGenerationContext.GetBuildMethod() в Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlanCreatePlanCreatorPolicy. (контекст IBuilderContext, NamedTypeBuildKey buildKey) в Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp (контекст IBuilderContext) в Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp (контекст IBuilderContext) в Microsoft.Practices.Unity.UnityContainer.DoBuildUp (тип t, Object существующий, строковое имя, IEnumerable`1 resolverOverrides)