1

コンストラクターのパラメーターとしてActionを受け取るクラスCommandがあり、そのActionからクラスCommandのメソッドのいくつかにアクセスする必要があります。これを達成する方法はありますか?

public class Command
{
    private readonly Action _action;

    public Command(Action action)
    {
        _action = action;
    }

    public void Execute()
    {
        _action();
    }

    public void AnotherMethod()
    {
    }
}

static void Main()
{
    var command = new Command(() =>
                  {
                      // do something

                      // ?? how to access and call 
                      // command.AnotherMethod(); ??

                      // do something else
                   });
    ....
}
4

4 に答える 4

3
public class Command
{
    private readonly Action<Command> _action;

    public Command(Action<Command> action)
    {
        _action = action;
    }

    public void Execute()
    {
        _action(this);
    }

    public void AnotherMethod()
    {
    }
}

static void Main()
{
    var command = new Command(cmd => cmd.AnotherMethod() );
}
于 2012-08-16T13:12:17.853 に答える
2

Action<T>次のように、オブジェクトを使用してそれ自体に渡すことができます。

public class Command {
    private readonly Action<Command> _action;

    public Command(Action<Command> action) {
        _action = action;
    }

    public void Execute() {
        _action(this);
    }

    public void AnotherMethod() {
    }
}

次に、次のように使用できます。

var command = new Command(x => {
    x.AnotherMethod();
});
于 2012-08-16T13:14:17.740 に答える
0

TがコマンドクラスであるActionを使用できます。

public class Command
{
    private readonly Action<Command> _action;

    public Command(Action<Command> action)
    {
        _action = action;
    }

    public void Execute()
    {
        _action(this);
    }

    public void AnotherMethod()
    {
    }
}

static void Main()
{
    var command = new Command(command =>
                  {
                      // do something

                      // ?? how to access and call 
                      // command.AnotherMethod(); ??

                      // do something else
                   });
    ....
}
于 2012-08-16T13:15:38.283 に答える
0

宣言するときに、アクションデリゲートパラメータを渡すことができます。Action<Command>

action(this)次に、コマンド内から呼び出します。アクションを渡すときは、(command) => command.AnotherMethod()

于 2012-08-16T13:15:38.433 に答える