【发布时间】:2018-07-05 02:58:27
【问题描述】:
我有以下模型类:
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 之外,所有属性似乎一切正常。当我需要公开该表达式时,该表达式会以某种方式转换为另一种表达式。
我认为最好只显示我的代码图片以及调试器看到的值。
如您所见,CreatedAt 属性表达式发生了一些奇怪的事情。
但是如果我将该表达式的类型更改为Expression<Func<Post, DateTime>>,它就可以工作。
【问题讨论】:
-
可能重复:stackoverflow.com/q/5707561/9678775(DateTime 是一个值类型(结构)。它被包装到 Convert() 中进行装箱)
-
请注意,DateTime 是
struct(值类型)。为了像对象一样处理它(即引用类型),它需要被装箱(即,转换/装箱为引用类型)。这基本上就是调试器工具提示中的表达式所暗示的。见这里关于拳击:docs.microsoft.com/en-us/dotnet/csharp/programming-guide/types/…
标签: c# expression