gpt4 book ai didi

c# - 动态声明一个类型作为参数传递...c#

转载 作者:太空宇宙 更新时间:2023-11-03 21:39:59 26 4
gpt4 key购买 nike

我在 VS2012 中使用 AutoMapper。这是我使用的 autoMapper 方法的签名:

         public static IMappingExpression<TSource, TDestination> CreateMap<TSource, TDestination>();

它接受两种类型作为参数,将类型 #1 映射到类型 #2 并返回类型 #2。我有一堆类都继承自同一来源。如果我尝试创建一个 AutoMap 实例,我必须执行以下操作:

            Mapper.CreateMap<ClassOne, ClassTwo>();  
ClassOne one = new ClassOne{Name="One};
ClassTwo two = Mapper.Map<ClassOne, ClassTwo>(one);

这会将 ClassOne 对象中的所有字段“映射”到我的 ClassTwo 对象(是的,ClassTwo 具有 ClassOne 的一些字段)。我想设置一个函数,它将调用 Mapper 函数以将一个对象映射到另一个对象,而不是使用相同代码仅更改 2 个对象 im 映射的多个函数。我可以对我的对象执行 GetType() 并获得我需要的字符串格式的类型:

         ClassOne one = new ClassOne();
Type t = one.GetType();
var type = t.FullName; //type is now "Generic.Collection.ClassOne"
Mapper.CreateMap<type, ClassTwo>();//this will not compile
Mapper.CreateMap<one.GetType(), ClassTwo>();//neither will this

但我无法将字符串传递给 Mapper 函数。如何动态声明类型?

我正在使用 AutoMapper 作为我想要如何声明和使用类型的示例。我还有其他功能可以做同样的事情。所以我的问题是如何动态声明类型? - 不是如何使用 AutoMapper。

最佳答案

CreateMap 方法还有另一个非泛型重载:

Mapper.CreateMap(t, typeof(ClassTwo));

关于c# - 动态声明一个类型作为参数传递...c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19847504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com