Выражение C # превращается в другое выражение само по себе - PullRequest
0 голосов
/ 04 июля 2018

У меня есть следующий класс модели:

public class Post
{
    public long Id { get; set; }
    public string AuthorId { get; set; }
    public DateTime CreatedAt { get; set; }
    public string Text { get; set; }

    public User Author { get; set; }
    public IReadOnlyCollection<PostRating> Ratings { get; set; }

    public IReadOnlyCollection<PostAction> UserPermissions { get; set; }
}

Мне нужно раскрыть некоторые свойства с помощью выражений, и все, кажется, в порядке со всеми свойствами, кроме CreatedAt. Когда мне нужно раскрыть это, выражение каким-то образом преобразуется в несколько иное выражение.

Я думаю, что лучше показать картинку моего кода и значения, которые видит отладчик.

enter image description here

Как видите, с этим выражением свойства CreatedAt произошло нечто странное. Но если я изменю тип этого выражения на Expression<Func<Post, DateTime>>, это сработает.

1 Ответ

0 голосов
/ 04 июля 2018

Скорее всего, у вас проблемы с боксом. В документации есть больше об этом, но в основном бокс - это процесс преобразования типа значения (например, DateTime) в object. Это неявное преобразование, которое объясняет, почему вы наблюдаете такое поведение. Если это нежелательно, лучше использовать тип в своем выражении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...