Sae*_*eid 17 c# expression properties c#-4.0
我在这里问类似的问题 ,假设这种类型:
public class Product {
public string Name { get; set; }
public string Title { get; set; }
public string Category { get; set; }
public bool IsAllowed { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这个使用MemberExpression
:
public class HelperClass<T> {
public static void Property<TProp>(Expression<Func<T, TProp>> expression) {
var body = expression.Body as MemberExpression;
if(body == null) throw new ArgumentException("'expression' should be a member expression");
string propName = body.Member.Name;
Type proptype = null;
}
}
Run Code Online (Sandbox Code Playgroud)
我这样使用它:
HelperClass<Product>.Property(p => p.IsAllowed);
Run Code Online (Sandbox Code Playgroud)
在HelperClass
我只需要属性名称(在此示例中IsAllowed
)和属性类型(在此示例中Boolean
)所以我可以获取属性名称,但我无法获取属性类型.我在调试中看到了属性类型,如下图所示:
那么你有什么建议来获得房产类型?
Tre*_*ley 27
尝试投射body.Member
到PropertyInfo
public class HelperClass<T>
{
public static void Property<TProp>(Expression<Func<T, TProp>> expression)
{
var body = expression.Body as MemberExpression;
if (body == null)
{
throw new ArgumentException("'expression' should be a member expression");
}
var propertyInfo = (PropertyInfo)body.Member;
var propertyType = propertyInfo.PropertyType;
var propertyName = propertyInfo.Name;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8780 次 |
最近记录: |