- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我问类似的问题here,假设这种类型:
public class Product {
public string Name { get; set; }
public string Title { get; set; }
public string Category { get; set; }
public bool IsAllowed { get; set; }
}
还有这个使用 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;
}
}
我是这样使用的:
HelperClass<Product>.Property(p => p.IsAllowed);
在 HelperClass
中,我只需要属性名称(在此示例中为 IsAllowed
)和属性类型(在此示例中为 Boolean
),这样我就可以得到属性名称,但我无法获取属性类型。我在调试中看到属性类型如下图所示:
那么您对获取属性类型有何建议?
最佳答案
尝试将 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;
}
}
关于c# - 通过 MemberExpression 获取属性类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10224119/
我知道如何创建一个 MemberExpression 例如entity.Property // Expression: "entity" var parameter = Expression.Para
我正在尝试使用 Expression.MakeBinary 动态生成二进制表达式: public static BinaryExpression MakeBinary( ExpressionT
假设我有以下代码(我需要在更复杂的表达式中的任何位置包含此代码段)。 Type paraType = typeof(MyModel); var member = paraType.GetMember(
我有这个(在 C# MVC 项目中): public class Bindable { //(...) public IHtmlString FormControlTextField(
这里有人有编写自定义 Linq 提供程序的经验吗? 我想做的是判断作为业务对象属性的 MemberExpression 是否应该包含在 SQL 中,或者作为常量处理,因为它来自恰好是业务对象的局部变量
我们有以下实体: public class Employee { public int Serial { get; set; } public string FullName { ge
我正在尝试编写一个通用函数,它接受一个 MemberExpression 和一个对象,并返回成员表达式中定义的属性的值。 这是获取属性名称的代码示例。 public static TProperty
我正在为 MVC 创建一个表单生成器,我想通过以下方式模拟 Razor 对链式属性的处理: builder.TextBoxFor(x => x.User.Email); 这将以与 Razor 相同的方
想象一下以下类: class A { public string Test {get; set;} } class B : A { .. some other members .. }
我们正在努力使在我们系统的所有区域编写强类型代码变得容易,而不是设置 var sortColumn = "FirstName"我们想说sortOption = (p => p.FirstName) .
我需要帮助。我有两个类:实体和模型。他们的代码如下。 public class TestEntityForSerialize { public String FIO { get; set; }
我问类似的问题here,假设这种类型: public class Product { public string Name { get; set; } public string Title { g
给定这段代码: static void Main(string[] args) { Expression> test = i => i.Prop; var body = (UnaryE
所以,假设我在 C# 中有以下表达式: Expression> expr = () => foo.Bar; 如何提取对 foo 的引用? 最佳答案 I had the same problem, bu
描述 我有一个表达式指向我的类型的属性。但它不适用于所有属性类型。 "不是意思"是什么意思它导致不同的表达类型。我以为它会导致MemberExpression 但事实并非如此。 对于 int 和 Gu
根据我的 Select a model property using a lambda and not a string property name 的答案采取行动问题,想要向集合添加属性,如下所示:
我希望使用表达式树创建以下 Linq 表达式: var result2 = soldiers.OrderByDescending(soldier => soldier.Ranks.OrderBy(r=
我正在处理一个 linq 查询,并尝试按照 Mutilevel include in C# Linq 中的建议将实体包含到多个级别. 所以我写下这样的查询 query.Include(u => u.
以下成员表达式类型有时可以为 Nullable,我正在检查,但是我需要将其转换为不可为 null 的类型, MemberExpression member = Expression.Property(
下面的表达式将属性 NAME 与值 PETER 进行比较。 ParameterExpression pe = Expression.Parameter(typeof(T), "
我是一名优秀的程序员,十分优秀!