相关疑难解决方法(0)

为什么有些对象属性是UnaryExpression和其他的MemberExpression?

根据我使用lambda而不是字符串属性名称问题选择模型属性的答案,想要向集合添加属性,如下所示:

var props = new ExportPropertyInfoCollection<JobCard>();
props.Include(model => model.BusinessInstallNumber).Title("Install No").Width(64).KeepZeroPadding(true);
props.Include(model => model.DeviceName).Title("Device").Width(70);
props.Include(model => model.DateRequested).Title("Request Date").Format("{0:dd/MM/yyyy}").Width(83);
Run Code Online (Sandbox Code Playgroud)

我在Include方法中编写了以下代码:

public class PropertyCollection<T>
{
    public void Include(Expression<Func<T, object>> expression)
    {
        var memberExpression = expression.Body as MemberExpression;
        if (memberExpression != null)
        {
            var pes = new ExportPropertyInfoBuilder {Property = new ExportPropertyInfo {Property = memberExpression.Member as PropertyInfo}};
            Properties.Add(pes.Property.Property.Name, pes.Property);
            return pes;
    }
Run Code Online (Sandbox Code Playgroud)

但是,在运行代码时,我发现一些lambda会按预期产生MemberExpression值,但是其他一些产生了UnaryExpression值.在使用lambdas添加所有属性之前,我必须将第一行代码更改为以下代码:

var memberExpression = expression.Body as MemberExpression ?? ((UnaryExpression) expression.Body).Operand as MemberExpression; …
Run Code Online (Sandbox Code Playgroud)

.net linq linq-expressions

70
推荐指数
1
解决办法
1万
查看次数

C#验证:没有硬编码的属性名字符串的IDataErrorInfo?

实施的最佳做法是IDataErrorInfo什么?反正有没有硬编码的字符串属性名称来实现它?

c# validation wpf

12
推荐指数
1
解决办法
6200
查看次数

标签 统计

.net ×1

c# ×1

linq ×1

linq-expressions ×1

validation ×1

wpf ×1