我想将一个强类型属性传递给一个方法,并将这个属性名用作 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);
}