Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MemberExpression标记为Convert(…)调用,而不是MemberExpression_C#_Reflection - Fatal编程技术网

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)