0

私は式ツリーが初めてで、以下を実装する方法がわかりません。アイデアやリンクに感謝します。

対応するビュー モデルへのマッピングが必要な 2 つのエンティティがあります。アプリケーションのさまざまな部分で再利用されるスタンドアロンの式をマッパーにしたいと考えています。

このマッパー式は、MainEntity を MainEntityViewModel に変換するためのものです。

public static Expression<Func<MainEntity, MainEntityViewModel>> MainMapper =
    me => new MainEntityViewModel()
        {
            Property1 = me.Property1, // direct mapping
            OtherEntityModel = new OtherEntityViewModel() // here i'd like to use outer expression
                {
                    Name = me.OtherEntityObject.Name,
                    Description = me.OtherEntityObject.Description
                }
        };

また、私の OtherEntity が次のような別の式であることを望みます。

public static Expression<Func<OtherEntity, OtherEntityViewModel>> OtherMapper =
    oe => new OtherEntityViewModel()
        {
            Name = oe.Name,
            Description = oe.Description
        };

しかし、最初のマッパー内でそれを適用する方法がわかりません。どういうわけか最初のツリーを拡張する必要があると思いますが(式ノードを追加するなど)、何をすべきか正確にはわかりません。
ありがとうございました!
PS: AutoMapper などについては知っていますが、手動マッピングを使用したいと考えています。

4

1 に答える 1

0

これを試して:

public static Func<MainEntity, OtherEntity, Func<OtherEntity, OtherEntityViewModel>, MainEntityViewModel> 
                MainMapper = me, oe, oMapper  => new MainEntityViewModel()
                                                    {
                                                        Property1 = me.Property1, // direct mapping
                                                        OtherEntityModel = oMapper.Invoke(oe)
                                                    };


public static Func<OtherEntity, OtherEntityViewModel> 
                OtherMapper = oe => new OtherEntityViewModel()
                                        {
                                            Name = oe.Name,
                                            Description = oe.Description
                                        };

Expression を使用する必要がある理由はよくわかりませんが、必要に応じて元に戻すことができます

于 2013-04-10T01:26:50.410 に答える