同様の特性に基づいてコピー発現クラス、フィールド

静的クラスExpressionGeneric <スズ、TOUT>
{
    プライベート静的のFunc <スズ、TOUT> _func。

    静的ExpressionGeneric()

    {
        ParameterExpressionパラメータ= Expression.Parameter(typeof演算(錫)、 "PARAM")。

        一覧<MemberBinding>リスト=新しいリスト<MemberBinding>();

        foreachの(typeof演算におけるVAR項目(TOUT).GetProperties())

        {

            MemberExpression部材= Expression.Property(パラメータ、typeof演算(錫).GetProperty(item.Name))。

            MemberBinding結合= Expression.Bind(項目部材)

            list.Add(結合)。

        }

        foreachの(typeof演算におけるVAR項目(TOUT).GetFields())

        {

            MemberExpression部材= Expression.Field(パラメータ、typeof演算(錫).GetField(item.Name))。

            MemberBinding結合= Expression.Bind(項目部材)

            list.Add(結合)。

        }

        MemberInitExpression memberInitExpression = Expression.MemberInit(Expression.New(typeof演算(TOUT))、リスト)。

        式<のFunc <スズ、TOUT >>ラムダ= Expression.Lambda <のFunc <スズ、TOUT >>(memberInitExpression、パラメータ)

        _func = Lambda.Compile()。

    }

    パブリック静的全てTtrans(TIN paramIn)

    {
        _Func.Invoke(paramIn)を返します。

    }

}

おすすめ

転載: www.cnblogs.com/KyriosAxis/p/12123357.html