gpt4 book ai didi

c# - 将回调传递给类

转载 作者:行者123 更新时间:2023-11-30 19:28:22 28 4
gpt4 key购买 nike

我有一个类,我想在其中存储一个函数调用。该函数调用可以由类调用但由父类设置。我想从外部提供要进行的调用,包括任何参数。

有点像...

public class TestDelegate
{
public TestDelegate()
{
TestClass tc = new TestClass(DoSomething("blabla", 123, null));
}

private void DoSomething(string aString, int anInt, object somethingElse)
{
...
}
}

public class TestClass
{
public TestClass(delegate method)
{
this.MethodToCall = method;
this.MethodToCall.Execute();
}

public delegate MethodToCall { get; set; }
}

TestClass 类被初始化时,它将使用指定的参数调用父类的 DoSomething 方法。我还应该提到,我不想为调用的方法要求相同的方法签名。意思并不总是 (string, int, object)

最佳答案

使用 Action 委托(delegate)类型并从闭包中创建它的一个实例:

public class TestClass
{
public TestClass(Action method)
{
MethodToCall = method;
method();
}

public Action MethodToCall { get; set; }
}

public class TestDelegate
{
public TestDelegate()
{
// Uses lambda syntax to create a closure that will be represented in
// a delegate object and passed to the TestClass constructor.

TestClass tc = new TestClass(() => DoSomething("blabla", 123, null));
}

private void DoSomething(string aString, int anInt, object somethingElse)
{
// ...
}
}

关于c# - 将回调传递给类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15842409/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com