将http post变量转换为匿名类型

Pre*_*ent 0 c# asp.net webforms

我有一个ashx页面设置来处理来自服务的传入http帖子.

而且我想知道是否有更好的方法来填充我的匿名类型而不是手动执行.例如.

public class myclass
{
    [key]
    public int ID { get; set; }
    public int field1 { get; set; }
    public int field2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后在我的ashx页面上

myclass mc = new myclass();

mc.field1 = context.Request.Form[field1];
mc.field2 = context.Request.Form[field2];
Run Code Online (Sandbox Code Playgroud)

是不是只有一种方法来转换或转换为我的类型?

myclass mc = new myclass();
mc = context.Request.Form;
Run Code Online (Sandbox Code Playgroud)

Dav*_*d L 5

如果"更好",则表示性能不是您最关心的问题,请确保您可以在Reflection中根据请求上下文中的键过滤掉潜在属性.

mc.GetType().GetProperties()
    .Where (x => context.Request.Form.AllKeys.Contains(x.Name)).ToList()
    .ForEach(x => 
        x.SetValue(mc, Convert.ChangeType(context.Request.Form[x.Name], x.PropertyType)));
Run Code Online (Sandbox Code Playgroud)

也就是说,这是否适用于空检查/类型检查?不.它表现得好吗?一点也不.它可读吗?我只是写了三次,把自己弄糊涂了.因此虽然可以做这样的事情,但这并不意味着它会更好.有时手动拉出每个属性是最好的方法.