我有以下问题。
class A
{
public bool Execute(int a);
}
class B
{
public bool Execute(bool a);
}
static class Consumer
{
public bool Validate(Delegate d);
}
我希望能够使用execute方法作为参数从“A”和“B”类内部调用Consumer的Validate方法
A或B内:
public static main()
{
x = new A()
x1 = A.Execute(1);
y = new B()
y1 = B.Execute(true)
Consumer.Validate(x1)
Consumer.Validate(y1)
}
当然这可行,但它不会做我想要的。它将执行并创建一个bool值X1,而不是将其存储为要在某一点执行的delegete我选择或将其作为内部对象将其作为集合进行处理,然后重新执行它。
我希望我能把它告诉你,这样你才能理解我的意图。
但是如何用论证来推进它。
这是对问题的简化解释,但仍然相同。
是否可以使用消费者中的委托方法打包参数,然后只执行它们。
答案 0 :(得分:4)
你可以使用lambda
public bool Execute(int a)
{
Consumer.Validate(() => this.Execute(a));
}
lambda () => this.Execute(a)
将a
的值存储在其自身内,并提供给Validate简单的你应该知道的界面。
最好将Validate
的签名更改为:
public bool Validate(Func<bool> paramLessPredicate);
答案 1 :(得分:0)
我认为你需要委托和值作为Consumer.Validate函数中的参数:
public bool Validate<T>(Funct<T,bool> validator, T value)
{
bool validatorResult = validator(value);
// Do whatever..
return someBool;
}
在A:
int value = 10;
bool result = Consumer.Validate(Execute, value);