Csharp/C#教程:配置AutoMapper以映射到具体类型,但允许在我的类的定义中使用接口分享


配置AutoMapper以映射到具体类型,但允许在我的类的定义中使用接口

我有一些类似于下面的代码。 基本上它表示从Web服务获取数据并将其转换为客户端对象。

void Main() { Mapper.CreateMap(); Mapper.CreateMap(); // Service side var hasSomethingFromWeb = new HasSomethingFromWebService(); hasSomethingFromWeb.Something = new SomethingFromWebService { Name = "Whilly B. Goode" }; // Client Side HasSomething hasSomething=Mapper.Map(hasSomethingFromWeb); } // Client side objects public interface ISomething { string Name {get; set;} } public class Something : ISomething { public string Name {get; set;} } public class HasSomething { public ISomething Something {get; set;} } // Server side objects public class SomethingFromWebService { public string Name {get; set;} } public class HasSomethingFromWebService { public SomethingFromWebService Something {get; set;} } 

我遇到的问题是我想在我的类中使用接口(在本例中为HasSomething.ISomething),但我需要将AutoMapper映射到具体类型。 (如果我没有映射到具体类型,那么AutoMapper将为我创建代理。这会导致我的应用程序出现其他问题。)

上面的代码给了我这个错误:

缺少类型映射配置或不支持的映射。

映射类型:SomethingFromWebService – > ISomething
UserQuery + SomethingFromWebService – > UserQuery + ISomething

所以我的问题是,如何映射到具体类型并仍在我的类中使用接口?

注意:我尝试添加此映射:

 Mapper.CreateMap(); 

但是返回的对象不是Something类型,它使用ISomething作为模板返回生成的代理。

所以我认为似乎有用的东西。

如果我添加这两个映射:

 Mapper.CreateMap(); Mapper.CreateMap().As(); 

然后它按我的意愿工作。

我无法找到关于’As’方法的任何文档(尝试使用google搜索!:),但它似乎是一个映射重定向。

例如:对于此映射( ISomething ),将其解析为Something

上述就是C#学习教程:配置AutoMapper以映射到具体类型,但允许在我的类的定义中使用接口分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ctvol.com/cdevelopment/997740.html

(0)
上一篇 2021年12月26日
下一篇 2021年12月26日

精彩推荐