gpt4 book ai didi

c# - 使用 Action 作为方法输入
转载 作者:太空宇宙 更新时间:2023-11-03 21:35:53 25 4
gpt4 key购买 nike

在这种情况下,我想要一种可以将其他方法作为输入的方法。

输入法总是有一个单一的对象作为输入,但对象是不同的。

这或多或少是我需要做的:

public static void takeAnything(Action<object> inputFunc)
{
Console.WriteLine(inputFunc.Method.Name);
}

public static void test1(MyOwnObject input){
// Do stuff with input object
}

public static void test2(MyOtherOwnObject input){
// Do stuff with input object
}

public static void startSystem(){
takeAnything(test1);
takeAnything(test2);
}

在这个虚拟案例中会写出:

test1
test2

我只是无法让它工作,所以非常感谢任何帮助。

编辑

我不知道这是否可能,也许不可能,但重要的是调用只是 takeAnything(test1) , 不是 takeAnything<MyOwnObject>(test1)或其他任何内容。

最佳答案

使你的方法通用

public static void TakeAnything<T>(Action<T> inputFunc)
{
Console.WriteLine(inputFunc.Method.Name);
}

当然,您将只能传递具有单个输入参数的方法。

更新:不幸的是,当您将方法组传递给方法时,C# 无法从用法中推断操作泛型参数类型,因此使用它的唯一方法是手动指定泛型参数类型

takeAnything<MyOwnObject>(test)

有关详细信息,请参阅问题 C# 3.0 generic type inference - passing a delegate as a function parameter

关于c# - 使用 Action<object> 作为方法输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21910184/

25 4 0