Обнаружение того, что MemberExpression имеет значение - PullRequest
2 голосов
/ 18 декабря 2009

Как определить, имеет ли выражение MemberExpression значение, которое необходимо скомпилировать / оценить?

У меня есть два отдельных выхода выражения члена, первый из которых имеет значение, а второй - нет. Как лучше всего провести различие между ними?

exp
**{value(Microsoft.Connect.Api.Client.Tests.SearchQueryUnitTests+<>c__DisplayClass6).handle}**
    [System.Linq.Expressions.MemberExpression]: **{value(Microsoft.Connect.Api.Client.Tests.SearchQueryUnitTests+<>c__DisplayClass6).handle}**
    NodeType: MemberAccess
    Type: {Name = "String" FullName = "System.String"}

против

exp
{x.CreatedBy}
    [System.Linq.Expressions.MemberExpression]: {x.CreatedBy}
    NodeType: MemberAccess
    Type: {Name = "String" FullName = "System.String"}

1 Ответ

1 голос
/ 23 декабря 2009

Я вижу два разных ответа на это.

Вы пытаетесь создать условие с выражениями, а затем что-то сделать с результатом? Если это так, вы создадите BinaryExpression типа Equals (вызовите статический метод Equals в классе Expression), передав в MemberExpression левое значение, а затем передав другое выражение, представляющее ненулевое значение (null, если ссылочный тип, или новый экземпляр структуры, если тип значения).

Если вы на самом деле пытаетесь вычислить выражение в этой точке, то я бы создал лямбда-выражение, которое фактически возвращает выражение, скомпилирует его, а затем проверит на предмет отсутствия значения в вашем коде.

...