NB этот ответ вызван тем фактом, что я думаю, что он интересен, однако его, вероятно, (определенно) не следует использовать для производственного кода.шаблон), который содержит все ключи словаря, которые вас интересуют, тогда вы можете использовать следующий метод:
public static class RouteValueDictionaryExtensions
{
public static TTemplate ToAnonymousType<TTemplate>(this RouteValueDictionary dictionary, TTemplate prototype)
{
var constructor = typeof(TTemplate).GetConstructors().Single();
var args = from parameter in constructor.GetParameters()
let val = dictionary.GetValueOrDefault(parameter.Name)
select val != null && parameter.ParameterType.IsAssignableFrom(val.GetType()) ? (object) val : null;
return (T) constructor.Invoke(args.ToArray());
}
}
, который в таком случае будет использоваться следующим образом: