簡體   English   中英

C#Automapper條件映射

[英]C# Automapper conditional mapping

我正在使用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 }))

因此,您可以看到我想基於源對象中的值在目標對象上設置一個嵌套對象,以創建一個對象並將其保存到目標元素。 我已經嘗試了上面的示例代碼,但是它拋出一個錯誤,說我不能在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);

測試類和枚舉

class OneObject
{
    public string value { get; set; }
}

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

enum Testenum
{
    A,
    B,
    C
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM