0

サブクラスとプロパティを持つ Original Document オブジェクトがあります。フォームから入力された値を保持するこのオブジェクトのサブセットである別のオブジェクト、必要に応じてビューモデルがあります。両方のオブジェクトが同じクラスに属しているため、構造は同一です。

新しいオブジェクトから元のオブジェクトに一般的に値を割り当てる方法はありますか? 私の現在のアプローチは明示的です:

            myOrigDoc.Introduction.Name = myDoc.Introduction.Name;
            myOrigDoc.Introduction.Clients[0].Firstname =    
            myDoc.Introduction.Clients[0].Firstname;

また、値を持つ (null ではない) プロパティのみが割り当てられるようにしたいと考えています。

これはできますか?

よろしくお願いします。

エド

編集: ValueInjector の実験と、null が割り当てられないようにするためのそのクラス。

public class StrNotNull: ConventionInjection
{
    protected override bool Match(ConventionInfo c)
    {
        return c.SourceProp.Name == c.TargetProp.Name && c.SourceProp.Value != null;
    }

    //protected override object SetValue(ConventionInfo c)
    //{
    //    return c.SourceProp.Value.ToString();
    //}
}

これを呼び出すコード:

        myOrigDoc.InjectFrom<StrNotNull>(myDoc);

EDIT2: Automapper で使用できる可能性のあるコード。null を無視して実際にマージを行うことについてはまだわかりませんが。

        Mapper.CreateMap<Document, Document>();
        myOrigDoc = Mapper.Map<Document, Document>(myDoc);

アドバイスやヘルプをお寄せいただきありがとうございます。

4

2 に答える 2

1

このタスクには、オブジェクトからオブジェクトへのマッパーである AutoMapper を使用できます。ライブラリとドキュメントはhttp://automapper.org/にあります。

于 2012-11-28T22:33:34.400 に答える
0

ValueInjecterはあなたが必要とする問題を解決するかもしれません

于 2012-12-05T14:23:34.903 に答える