C# MemberExpression标记为Convert(…)调用,而不是MemberExpression
我目前面临在自定义类型上使用反射的问题。我有一个具有以下签名的方法:C# MemberExpression标记为Convert(…)调用,而不是MemberExpression,c#,reflection,C#,Reflection,我目前面临在自定义类型上使用反射的问题。我有一个具有以下签名的方法: protected static bool ReplacePropertyValue<TTargetResource, TValue>(TEntity entity, TResourcePatch resourcePatch, Expression<Func<TResource, TTargetResource>> sourceResourcePropertyExpression, Expr
protected static bool ReplacePropertyValue<TTargetResource, TValue>(TEntity entity, TResourcePatch resourcePatch, Expression<Func<TResource, TTargetResource>> sourceResourcePropertyExpression, Expression<Func<TTargetResource, TValue>> sourcePropertyExpression, Expression<Func<TEntity, TValue>> targetPropertyExpression)
但是,最后一个参数显示为{team=>Convert(team.TeamParentTeamId)}
,我不明白为什么TeamParentTeamId
的类型为Guid
。
当与另一个类型为Guid?
的属性一起使用时,它会正常工作
有人能告诉我为什么第一个(
Guid
)是一个转换(…)
-表达式吗?因为两个表达式都需要返回TValue
。在您的例子中,有一个表达式返回Guid
,还有一个表达式返回Guid?
。由于可以将结构隐式转换为其可空版本,TValue
可以是Guid?
,并在返回Guid
的属性选择器顶部应用隐式转换
ReplacePropertyValue(theEntity, resourcePatch, team => team.ParentTeam, pt => pt.Id, team => team.TeamParentTeamId)