2017-03-27 8 views
1

ソースとデスティネーションで同じクラスを使用する(オブジェクトをコピーする)マッパーを作成したいが、 "ColumnName"のプロパティ値が* '、値のプロパティ値を2倍します。 これはクラスです:プロパティ値が値で始まる場合、オートマティック値を計算する

public class CustomerDatabaseParameter 
{ 

    public string ColumnName { get; set; } 

    public double Value { get; set; } 

} 

これは私が必要とする結果である:

例1:

From: 
ColumnName = "*xxxx"; 
Value = 50.0; 

To: 
ColumnName = "*xxxx"; 
Value = 100.0; 

例2:

From: 
ColumnName = "www"; 
Value = 50.0; 

To: 
ColumnName = "www"; 
Value = 50.0; 

答えて

0

あなたはどんな式を追加することができますあなたはResolveUsingの中で好きです。目的地のタイプと一致するタイプを返すようにしてください。

CreateMap<CustomerDatabaseParameter, CustomerDatabaseParameter>() 
    .ForMember(dest => dest.Value, o => o.ResolveUsing(
     src => src.ColumnName.StartsWith("*") ? (src.Value * 2) : src.Value 
    )); 
+0

これは機能しますが、値は原点と同じです...何か考えていますか? –

+0

多分ColumnNameにスペースがありますか? 'src => src.ColumnName.Trim()。StartsWith(" * ")'を試してください。式の中にデバッガブレークポイントを追加して、一致するかどうかを調べることができます。 –

+0

私は、CreateMapをvar map = 新しいMapperConfiguration(cfg => cfg.CreateMap ....)に挿入しました。CreateMapper();私はユーザーのmap.map (ソース)です。そうですか? –

関連する問題