【发布时间】:2023-04-06 05:24:01
【问题描述】:
有没有办法从 linq 表达式中获取使用的实例作为参考或其他东西?
目前我有以下声明我的表达式:
var testClass = new ClassToTest();
otherClass.RunTest(() => testClass.NumberOfCars);
现在我想从表达式中获取使用的实例对象。这样我以后就可以动态地获取另一个属性,例如。我知道我可以将更多参数传递给函数本身以使用它们,但我想知道这是否也可以通过表达式来实现。
更新
public class ClassToTest
{
public int NumberOfCars;
public int NumberOfChildren;
public ClassToTest()
{
NumberOfCars = 1;
NumberOfChildren = 2;
}
}
public class TestingClass<TResult>
{
public bool RunTest(Expression<Func<TResult>> expression)
{
// var numberOfCars = get info with the help of the expression and reflection
// var instance = get used instance in expression
if (instance.NumberOfChildren > 2 && numberOfCars == 1)
{
return true;
}
else
{
return false;
}
}
}
var otherClass = new TestingClass<int>();
这只是理解我的问题的一个基本示例。该示例可以更好地解决将两个值作为参数传递并检查它们,但我想知道这是否可以存档。
【问题讨论】:
-
如果您甚至没有任何实例怎么办?例如。
(RunTest(() => 3)。这个问题没有多大意义,因为它假设一个表达式总是代表一个实例方法调用。但它可以是 any 代表。如果您想拥有这样的表达式,您的委托当然也应该期望该实例作为参数。 -
无论如何我看不出你在哪里使用那个表达。为什么你认为你甚至需要任何东西?
标签: c# linq reflection linq-expressions