静的クラス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)を返します。
}
}