【发布时间】:2012-04-08 01:37:10
【问题描述】:
我在我的应用程序中使用 Unity 2.1,并在一个解决方案的标题中收到错误。我不知道去哪里找。
- 我正在运行 Windows 7 64 位
- 32 位应用程序已启用
- 尝试针对“任何 CPU”和“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" />
ProductManager + 界面
public interface IProductManager<TProduct> where TProduct : Product
{
}
public class ProductManager<TProduct> : IProductManager<TProduct> where TProduct : Product
{
}
OrderManager + 接口
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(类型 委托类型)在 Microsoft.Practices.ObjectBuilder2.DynamicBuildPlanGenerationContext.GetBuildMethod() 在 Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlanCreatorPolicy.CreatePlan(IBuilderContext 上下文,NamedTypeBuildKey buildKey)在 Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext 上下文)在 Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext 上下文)在 Microsoft.Practices.Unity.UnityContainer.DoBuildUp(类型 t, Object existing, String name, IEnumerable`1 resolverOverrides)
【问题讨论】:
-
请发布 BadImageFormatException 的完整 StackTrace
-
@Jehof:添加了堆栈跟踪
标签: exception unity-container badimageformatexception