Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#自动映射条件映射_C#_Nhibernate_Automapper - Fatal编程技术网

C#自动映射条件映射

C#自动映射条件映射,c#,nhibernate,automapper,C#,Nhibernate,Automapper,我使用nhibernate将元素从一个对象映射到另一个对象。但是,我的复杂对象中的一个元素需要设置一个条件,以便目标对象元素相应地设置一个值 详解 Mapper.CreateMap<OneObject, AnotherObject>() .ForMember( destination => destination.complexelement, option => option.MapFrom(source=> source.valu

我使用nhibernate将元素从一个对象映射到另一个对象。但是,我的复杂对象中的一个元素需要设置一个条件,以便目标对象元素相应地设置一个值

详解

 Mapper.CreateMap<OneObject, AnotherObject>()
 .ForMember( 
     destination => destination.complexelement, 
       option => option.MapFrom(source=> source.value == enumValue.ToString() 
        ? new object( {Id 123 }) 
        : new object ({ Id 567 }))
Mapper.CreateMap()
.FORMEBER(
destination=>destination.complexelement,
option=>option.MapFrom(source=>source.value==enumValue.ToString()
?新对象({ID123})
:新对象({ID567}))
因此,您可以看到,我希望根据源对象的值在目标对象上设置嵌套对象,以创建一个对象并将其保存到目标元素。上面的示例代码我已经尝试过,但它抛出一个错误,表示我不能在lambda表达式上使用字符串

有人知道如何根据条件设置对象吗


谢谢

我想这对你有用。不幸的是它基于AutoMapper 6.1.1。希望你能使用这个版本。因为我不知道你的类结构,我创建了简单的测试类,但你应该能够将示例转移到你的场景中

OneObject oo = new OneObject();
oo.value = "B";
Testenum enumValue = Testenum.A;

Mapper.Initialize(a => a.CreateMap<OneObject, AnotherObject>()
    .ForMember(
        destination => destination.complexelement,
        option => option.MapFrom(source => source.value == enumValue.ToString()
            ? 123
            : 567)));

AnotherObject ao = Mapper.Map<OneObject, AnotherObject>(oo);

什么是
enumValue
?实际的错误文本是什么?emumvalue只是用来比较的。我给你的错误消息
class OneObject
{
    public string value { get; set; }
}

class AnotherObject
{
    public object complexelement { get; set; }
}

enum Testenum
{
    A,
    B,
    C
}