厳密に型指定されたプロパティをメソッドに渡し、このプロパティ名を mhy コレクションの文字列として使用したいので、厳密に型指定されたプロパティを渡すことができるコードをいくつか見つけました。
public static void Add<TObject, TProperty>(this NameValueCollection collection, Expression<Func<TObject, TProperty>> expression, string value)
{
var member = expression.Body as MemberExpression;
collection.Add(member.Member.Name, value);
}
これは機能し、私が望むことを行いますが、これが正確にどのように機能するのか疑問に思っていました。私が興味を持っている部分はAdd<Tobject, TProperty>
、式と組み合わせたメソッド ( )のジェネリック引数ですFunc
。誰かがこれがどのように機能するかを説明できますか? そして、なぜこのメソッドを次のように呼び出すことができるのcollection.Add((MyObject m) => m.FullName, "Martijn")
ですか? を使用する必要がないのはなぜAdd<MyObject, ???>(m => m.FullName, "Martijn")
ですか?
更新:メソッドをこれにリファクタリングしました:
public static void Add<TObject>(this NameValueCollection collection, Expression<Func<TObject, string>> expression, string value)
{
var member = expression.Body as MemberExpression;
collection.Add(member.Member.Name, value);
}