Ширина ввода на Bootstrap 3

Вы близки, но вам нужно знать, что анонимные типы не имеют конструкторов по умолчанию. Следующий код печатает { Name = def, Num = 456 }:

Type anonType = new { Name = "abc", Num = 123 }.GetType();
var exp = Expression.New(
            anonType.GetConstructor(new[] { typeof(string), typeof(int) }),
            Expression.Constant("def"),
            Expression.Constant(456));
var lambda = LambdaExpression.Lambda(exp);
object myObj = lambda.Compile().DynamicInvoke();
Console.WriteLine(myObj);

Если вам не нужно создавать много экземпляров этого типа, Activator.CreateInstance будет делать то же самое (это быстрее для нескольких экземпляров, но медленнее для многих). Этот код печатает { Name = ghi, Num = 789 }:

Type anonType = new { Name = "abc", Num = 123 }.GetType();
object myObj = Activator.CreateInstance(anonType, "ghi", 789);
Console.WriteLine(myObj);
147
задан cyberwombat 15 August 2017 в 20:12
поделиться