0
ASP.NET MVCフレームワークが匿名型パラメータ(たとえば、HTML属性を表すパラメータを匿名型として渡すことができるHtml.ActionLink
など)から値を取得する方法について説明できます。 Reflectionを内部的に使用していると読んでいます。私は、よりよく理解するために擬似コードまたは例を探しています。ASP.NET MVCフレームワークの匿名型パラメータ
ASP.NET MVCフレームワークが匿名型パラメータ(たとえば、HTML属性を表すパラメータを匿名型として渡すことができるHtml.ActionLink
など)から値を取得する方法について説明できます。 Reflectionを内部的に使用していると読んでいます。私は、よりよく理解するために擬似コードまたは例を探しています。ASP.NET MVCフレームワークの匿名型パラメータ
:
class Program
{
static void Main()
{
var anon = new { foo = "foo value", bar = "bar value" };
IDictionary<string, object> values = new RouteValueDictionary(anon);
foreach (var item in values)
{
Console.WriteLine("{0}, {1}", item.Key, item.Value);
}
}
}
実装はあなたが常にASP.NET MVCのソースコードを見てとることが懸念される限りしかし、ここで関連する部分があります:あなたはそれがその後のすべての匿名のオブジェクトのプロパティとその値を取得するためにTypeDescriptor.GetProperties
メソッドを使用して見ることができるように
public class RouteValueDictionary : IDictionary<string, object>, ICollection<KeyValuePair<string, object>>, IEnumerable<KeyValuePair<string, object>>, IEnumerable
{
public RouteValueDictionary(object values)
{
this._dictionary = new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase);
this.AddValues(values);
}
private void AddValues(object values)
{
if (values != null)
{
foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(values))
{
object obj2 = descriptor.GetValue(values);
this.Add(descriptor.Name, obj2);
}
}
}
...
}
。
MVC [ソース](http://aspnet.codeplex.com/releases)を見て、自分で確認することができます – Eranga
あなたの入力をありがとう –