C# 查找代理的名称

C# 查找代理的名称,c#,delegates,C#,Delegates,说我有下面的课 public class Conditional { private readonly Func<Boolean> _conditional; public Conditional(Func<Boolean> test) { _conditional = test; } public override BehaviourReturnCode Behave() { var

说我有下面的课

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
 }
所以问题是,我如何才能找到\u conditional的方法名,在本例中是IsAlive

仅供参考_conditional.Method.Name不起作用:D


干杯

考虑以下几点:

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

Func<bool> UserIsDead = UserIsAlive;
Func UserIsAlive=()=>
{
返回false;
};
Func userishead=UserIsAlive;
有两个局部变量引用相同的lambda函数

哪一个是真名
UserIsAlive
userishead

提示:它没有名字。这是一个函数。如果你想以某种方式命名它,那就由你自己决定如何命名。把它放在课堂上?把它存到字典里?像这样将名称传递给函数


var isAlive=新条件(actor.isAlive,“isAlive”)

考虑以下几点:

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

Func<bool> UserIsDead = UserIsAlive;
Func UserIsAlive=()=>
{
返回false;
};
Func userishead=UserIsAlive;
有两个局部变量引用相同的lambda函数

哪一个是真名
UserIsAlive
userishead

提示:它没有名字。这是一个函数。如果你想以某种方式命名它,那就由你自己决定如何命名。把它放在课堂上?把它存到字典里?像这样将名称传递给函数


var isAlive=新条件(actor.isAlive,“isAlive”)

所以在您的示例中,您希望isAlive被指定为“isAlive”?您是否担心lambdas和anonomus代理?@Miau我已经尝试过了,并且_conditional.Method.Name吐出了“isAlive”。请看-我正在Mac.NET4.5上运行Mono。这里有一个链接,指向一篇可能会有所帮助的帖子。委托对象没有名称,它们最多有一个类型。Conditional.\u Conditional是类的字段。它与委托对象无关,只存储对它的引用。字段有名称,您可以使用typeof(Conditional).GetFields()找到它们。因此,在您的示例中,您希望isAlive被指定为“isAlive”?您是否担心lambdas和anonomus委托?@Miau我已经尝试过了,并且_Conditional.Method.Name吐出了“isAlive”。请看-我正在Mac.NET4.5上运行Mono。这里有一个链接,指向一篇可能会有所帮助的帖子。委托对象没有名称,它们最多有一个类型。Conditional.\u Conditional是类的字段。它与委托对象无关,只存储对它的引用。字段有名称,您可以使用typeof(Conditional).GetFields()找到它们;编译器将生成一个供自己内部使用。不过,答案的精神仍然是正确的;编译器将生成一个供自己内部使用。不过,答案的精神仍然是正确的。