- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个使用控制反转的 MVC 应用程序,因此广泛使用接口(interface)类型,具体实现由依赖解析器根据需要注入(inject)。实体接口(interface)继承自描述实体的一些基本管理功能的基本接口(interface)。 ViewModel 也被广泛使用。
该应用程序使用 Automapper,我创建了从 View 模型到各种实体接口(interface)的映射。映射配置正确验证。但是,当我调用 Automapper 执行映射时,代码失败并显示 TypeLoadException
.
我相信 Automapper 能够映射到接口(interface)(参见 Jimmy Bogard 的 this)。
Automapper 代理生成器似乎可能省略了将 MyMethod() 添加到代理,这在 Reflection 尝试创建类型时导致异常。
如果不是这种情况,我该如何让这张 map 工作?我错过了什么明显的东西吗?
这是一个简化的控制台应用程序,它演示了该场景,并在运行时重现了错误:
public interface IEntity
{
string Foo { get; set; }
string Bar { get; set; }
string MyMethod();
}
public class MyEntity : IEntity
{
public string Foo { get; set; }
public string Bar { get; set; }
public string MyMethod()
{
throw new NotImplementedException();
}
}
public class MyViewModel
{
public string Foo { get; set; }
public string Bar { get; set; }
}
class Program
{
static void Main(string[] args)
{
AutomapperConfig();
MyViewModel vm = new MyViewModel { Foo = "Hello", Bar = "World" };
IEntity e = Mapper.Map<MyViewModel, IEntity>(vm);
Console.WriteLine(string.Format("{0} {1}", e.Foo, e.Bar));
}
private static void AutomapperConfig()
{
Mapper.Initialize(cfg => {
cfg.CreateMap<MyViewModel, IEntity>();
});
Mapper.AssertConfigurationIsValid();
}
}
InnerException: System.TypeLoadException
HResult=-2146233054
Message=Method 'MyMethod' in type 'Proxy<AutomapperException.IEntity_AutomapperException_Version=1.0.0.0_Culture=neutral_PublicKeyToken=null>' from assembly 'AutoMapper.Proxies, Version=0.0.0.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005' does not have an implementation.
Source=mscorlib
TypeName=Proxy<AutomapperException.IEntity_AutomapperException_Version=1.0.0.0_Culture=neutral_PublicKeyToken=null>
StackTrace:
at System.Reflection.Emit.TypeBuilder.TermCreateClass(RuntimeModule module, Int32 tk, ObjectHandleOnStack type)
at System.Reflection.Emit.TypeBuilder.CreateTypeNoLock()
at System.Reflection.Emit.TypeBuilder.CreateType()
at AutoMapper.Impl.ProxyGenerator.CreateProxyType(Type interfaceType)
at AutoMapper.Impl.ProxyGenerator.GetProxyType(Type interfaceType)
at AutoMapper.MappingEngine.AutoMapper.IMappingEngineRunner.CreateObject(ResolutionContext context)
at AutoMapper.Mappers.TypeMapObjectMapperRegistry.NewObjectPropertyMapMappingStrategy.GetMappedObject(ResolutionContext context, IMappingEngineRunner mapper)
at AutoMapper.Mappers.TypeMapObjectMapperRegistry.PropertyMapMappingStrategy.Map(ResolutionContext context, IMappingEngineRunner mapper)
at AutoMapper.Mappers.TypeMapMapper.Map(ResolutionContext context, IMappingEngineRunner mapper)
at AutoMapper.MappingEngine.AutoMapper.IMappingEngineRunner.Map(ResolutionContext context)
最佳答案
当使用接口(interface)作为目标时,AutoMapper 将为您创建一个代理类型,但这仅支持属性。
为了解决这个问题,您可以告诉 AutoMapper 如何在映射上使用 ConstructUsing 构造目标对象,因此在上面的示例中,您的创建 map 看起来像这样......
cfg.CreateMap<MyViewModel, IEntity>().ConstructUsing((ResolutionContext rc) => new MyEntity());
关于interface - Automapper 映射到接口(interface) : "TypeLoadException" exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18535909/
我尝试实现 azure 函数,但不断收到以下异常。 "TypeLoadException: Could not load type 'System.UriTemplate' from assemb
通过这个代码 module ObjectRe = type BM = A | N type Object = { Name: string Pattern: BM array
我正在编写一个 .NET 命令行应用程序,它将用户从现有数据库迁移到 aspnetdb。为了简化特定于用户的设置,我使用了 Joel Spolsky 撰写的关于 here 的配置文件类. 它在 ASP
我正在使用 Compact Framework 3.5/VS2008。我的 TypeLoadException 行为非常奇怪。以下代码抛出此错误。原因是数据库连接有问题。但是由于某些未知原因,此内部异
在我正在开发的一个简单应用程序中,我有三个相关的程序集: “MyCompany.Geography.Windows.Forms”,这是一个类库,其中包含 winforms 控件 “MyCompany.
所以我尝试将依赖项加载到我的代码中,然后我得到: TypeLoadException: Could not load type 'System.Data.SqlClient.SqlConnection
以下代码在 VS2013 和 VS2015 中编译,适用于从 2.0 到 4.6.1 的各种 .NET Framework 版本,但在执行时抛出 System.TypeLoadException: n
11 月 7 日 10:29 MST 更新 奇怪的是,如果我将属性从 ComponentModel 文件夹中移回 Common 项目的根目录,代码就可以正常工作。在为 InflowHealth.Com
这有点啰嗦,所以这里是快速版本: 为什么这会导致运行时 TypeLoadException?(编译器应该阻止我这样做吗?) interface I { void Foo(); } class
我正在编写一个 .NET 3.5 应用程序 (WinForms),它使用外部 DLL 中的类,并且每次应用程序尝试启动时我都会收到 System.TypeLoadException。 这是 VS 显示
一些背景知识:我最近从源代码 (https://github.com/ServiceStack/ServiceStack) 重新编译了 ServiceStack 库。在完成一些错误修复后,我还重新编译
当我尝试启动我的单元测试时,出现一个错误窗口: System.TypeLoadException: Method 'get_SolutionDirectory' in type 'JetBrains.
我在 Windows 应用商店应用程序中使用 Winmd(Windows 运行时组件)。当我尝试实例化在 winmd 中定义的类型时,出现以下异常: System.TypeLoadException
你能告诉我解决 System.TypeLoadException 问题的方法吗? 我的解决方案中的现有项目存在此异常,我从同一解决方案中的单元测试项目中引用了该项目。 当我运行我的单元测试时抛出这个异
我正在尝试使用以下代码将我的 Web API 连接到 MySql 数据库: public class Startup { public void ConfigureServices
我目前正在为我的公司管理一个 ASP.NET 应用程序。最近,当我尝试调试代码时遇到了 System.TypeLoadException。 确切的信息是: Inheritance security r
我在使用强类型集线器时遇到 TypeLoadException。我的界面是: public interface IClientCallback { void callback(T msg, s
我正在使用 VS2008 使用 C# 开发一个适用于 Honeywell Dolphin 6100 的应用程序,这是一款带有条码扫描器的移动数据终端,使用类似操作系统的 Windows CE 5.0。
你能否创建一个 .NET 4 版本的应用程序进行测试是老板们无辜的问题——当然! 但是在我将 Winforms 应用程序中的 27 个项目更改为 .NET 4 并重新编译后,在启动应用程序时,我得到了
在我们的 Azure 云服务中,我们使用 Mvc、WebApi 和 Autofac。 Mvc 和 WebApi 需要 System.Web.Http 版本5.2.3 Autofac.WebApi2想要
我是一名优秀的程序员,十分优秀!