gpt4 book ai didi

c# 多表达式参数

转载 作者:行者123 更新时间:2023-11-30 15:08:51 24 4
gpt4 key购买 nike

我正在尝试创建一个方法签名,它使用多种类型的多个属性

我会这样调用它:

AllPropertiesExcept(() => Property1, () => Property2)

这个方法几乎可以工作,除了属性的类型必须相同。我只打算使用属性名称,但想使用 lambda 表达式来启用简单的重构。

public static string MyMethod<T>(params Expression<Func<T>>[] propertyExpression)

最佳答案

我会使用 AllPropertiesExcept(params Expression<Func<object>>[] properties) ,您仍然可以从中获取属性名称,但属性的类型无关紧要。

编辑:但是,我倾向于以相反的方式使用它 - 不是排除我不想看到的属性,而是包括我想看到的属性。原因很简单——为了让你的方式奏效,你仍然需要反射(reflection)——按照我的方式,你可以轻松地使用 Func您可以直接获取实际数据。

编辑 2(从表达式中获取属性名称):

Expression<Func<object>> obj = something; // you get this in your method

((obj.Body as UnaryExpression).Operand as MemberExpression).Member.Name

我真的可以建议你使用 LinqPad 来做这样的事情,你可以通过 Dump() 轻松地向下钻取对象。 , 它显示的对象非常用户友好。只需重新创建一个小示例并进行实验。

关于c# 多表达式参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5081995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com