首页 新闻 会员 周边 捐助

.net中一个方法传参的问题,不知道这个参数该怎么传,求解

0
悬赏园豆:10 [已解决问题] 解决于 2012-09-10 10:27

方法一的调用如下:

var propertyName = GetPropertyName<Category>(x => x.Parent.Parent.Parent.Name);

那方法二该怎么调用呢 ?就是参数(Expression<Func<T, object>>[] )该怎么传啊 ?

 方法一:

protected string GetPropertyName<T>(Expression<Func<T, object>> expression)

{

return ReflectionHelper.GetPropertyNameFromExpression(expression);

}

//方法二:

protected List<string> GetPropertyNames<T>(Expression<Func<T, object>>[] expression)

{

return ReflectionHelper.GetPropertyNamesFromExpressions(expression);

}

 

}

}

 

 

namespace SomeNamespace

{

public class Category

{

public Categories CategoryId { get; set; }

public Category Parent { get; set; }

public string Name { get; set; }

}

 

 

public enum Categories

{

Books = 1,

Movies = 2

}

}

夜星冷的主页 夜星冷 | 初学一级 | 园豆:71
提问于:2012-09-10 10:15
< >
分享
最佳答案
0

new Expression<Func<T, object>>[] {x => x.Parent.Parent.Parent.Name,x => x.Parent.Parent.Parent.Name}

收获园豆:5
Launcher | 高人七级 |园豆:45050 | 2012-09-10 10:23
其他回答(2)
0

protected U GetPropertyName<T,U>(Expression<Func<T, U>> expression)

{

return (U)(ReflectionHelper.GetPropertyNameFromExpression(expression));

}

chenping2008 | 园豆:9836 (大侠五级) | 2012-09-10 10:21

我想知道是这个方法:

protected List<string> GetPropertyNames<T>(Expression<Func<T, object>>[] expression)

{

return ReflectionHelper.GetPropertyNamesFromExpressions(expression);

}

该怎么调用呢,Expression<Func<T, object>>[] expression 这个参数该怎么写?

支持(0) 反对(0) 夜星冷 | 园豆:71 (初学一级) | 2012-09-10 10:23
0
var propertyNames = GetPropertyNames<Category>(new Expression<Func<Category, object>>[] { x => x.Parent.Parent.Parent.Name });

蛋疼吗?如果你可以修改方法2的话,建议加个params参数,其他不变:

protected List<string> GetPropertyNames<T>(params Expression<Func<T, object>>[] expression)

这样你就可以像方法1那样去调用方法2了,多个Expression之间用逗号隔开,而且这样的话,你的方法1甚至可以删掉不用了。

收获园豆:5
水牛刀刀 | 园豆:6350 (大侠五级) | 2012-09-10 10:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册