C# PropertyInfo参数与需求

C# PropertyInfo参数与需求,c#,reflection,C#,Reflection,是否可以将PropertyInfo(或类似内容)作为参数,并要求PropertyInfo的类型为decimal?或者更好地要求它是特定类或接口的属性?我的想法与typescript的keyof 这正是我所希望的 public decimal SumProperty(Item item, PropertyInfo propertyOfItem){ // has to be casted to decimal? return propertyOfItem.GetValue(item)

是否可以将
PropertyInfo
(或类似内容)作为参数,并要求PropertyInfo的类型为
decimal
?或者更好地要求它是特定类或接口的属性?我的想法与typescript的
keyof

这正是我所希望的

public decimal SumProperty(Item item, PropertyInfo propertyOfItem){
    // has to be casted to decimal?
    return propertyOfItem.GetValue(item);
}

您可以显示预期用途吗?但一般来说,您不能要求属性为具有当前签名的某种类型,但可以检查它是否具有
PropertyInfo.PropertyType
。您还可以将属性选择器与
Func
-
SumProperty(Item Item,Func selector)
一起使用,并将其称为
selector(Item)
(在所提供的情况下,这有点出乎意料)。简言之,不,C不允许限制类的值,只限制类变量的值。不过,您可以在运行时添加检查。另一种方法是使用
Func
。或者,如果确实需要
PropertyInfo
,可以从
表达式中提取它