找到代理人的姓名

时间:2013-10-09 20:42:28

标签: c# delegates

说我有以下课程

public class Conditional 
{
    private readonly Func<Boolean> _conditional;

    public Conditional(Func<Boolean> test)
    {
        _conditional = test;
    }

    public override BehaviourReturnCode Behave()
    {
        var conditionalResult = _conditional.Invoke();
 //... keeps going
 }

所以当我创建一个Conditional实例时,我会做类似

的事情
var isAlive = new Conditional(actor.IsAlive);

所以问题是,我怎样才能找到 _conditional 的方法名称,在这种情况下是IsAlive?

FYI _conditional.Method.Name不这样做:D

干杯

1 个答案:

答案 0 :(得分:4)

请考虑以下事项:

Func<bool> UserIsAlive = () =>
    {
        return false;
    };

Func<bool> UserIsDead = UserIsAlive;

你有两个引用相同lambda函数的局部变量。

哪一个是真名? UserIsAliveUserIsDead

提示:它没有名字。这是一个功能。如果你想以某种方式命名它,由你决定如何这样做。把它包在课堂上?把它存放在字典中?将名称传递给函数是这样的吗?

var isAlive = new Conditional(actor.IsAlive, "IsAlive");