在同一实例上调用委托方法时,避免传入对象的实例作为参数?

时间:2018-03-16 19:31:15

标签: c# .net scope delegates

我有一个类Y,其成员变量类型为Action<Y, object>。我在实例化类时将一个静态方法从类B分配给该委托。

class Y 
{
    //Other data fields...

    public Action<Y, object> DelegateMethodMember { get; set; }
}

static class B
{
    public static void StaticMethod(Y y, object obj) 
    { 
        //Just an example of something I need to do.
        y.Something = obj.SomethingElse;

        //Here's what I would like to do, while also getting rid of my first parameter.
        this.Something = obj.SomethingElse;
    }
}

//Elsewhere in the program...

Y y = new Y();
y.DelegateMethodMember = B.StaticMethod;

这就是我的问题所在。稍后在程序中我想实际调用这个方法,最后我最终得到了对象实例的这种笨拙的双重用法:

y.DelegateMethodMember(y, objectGoesHere);

原因是我必须在此方法中使用y但我不能使用this,因为方法的范围是B而不是Y的实例{1}}我正在调用该方法。

有没有办法,也许通过手动绑定范围和JavaScript,避免传入y作为参数而是简单地使用this或方法中的其他模式来访问成员是y

1 个答案:

答案 0 :(得分:1)

当然,稍加操纵......

SYN/ACK

您可以稍后打电话:

SYN

将使用192.168.0.134作为方法变量调用。