In C# 3.0 you can use Expression to create a class with the following syntax:
var exp = Expression.New(typeof(MyClass));
var lambda = LambdaExpression.Lambda(exp);
object myObj = lambda.Compile().DynamicInvoke();
But how do you use Expression to create an Anonymous class?
//anonymousType = typeof(new{ Name="abc", Num=123});
Type anonymousType = Expression.NewAnonymousType??? <--How to do ?
var exp = Expression.New(anonymousType);
var lambda = LambdaExpression.Lambda(exp);
object myObj = lambda.Compile().DynamicInvoke();
You’re close, but you have to be aware that anonymous types don’t have default constructors. The following code prints
{ Name = def, Num = 456 }:If you don’t have to create many instances of this type,
Activator.CreateInstancewill do just as well (it’s faster for a few instances, but slower for many). This code prints{ Name = ghi, Num = 789 }: