gpt4 book ai didi

c# - 如何将动态用作泛型?

转载 作者:可可西里 更新时间:2023-11-01 08:54:50 37 4
gpt4 key购买 nike

如何将动态用作泛型?

这个

var x = something not strongly typed;
callFunction<x>();

还有这个

dynamic x = something not strongly typed;
callFunction<x>();

都产生这个错误

Error   1   The type or namespace name 'x' 
could not be found (are you missing a using directive or an assembly reference?)

我能对 x 做什么使其足够合法以用于 <x>

最佳答案

您可以使用类型推断对调用进行排序:

dynamic x = something not strongly typed;
CallFunctionWithInference(x);

...

static void CallFunctionWithInference<T>(T ignored)
{
CallFunction<T>();
}

static void CallFunction<T>()
{
// This is the method we really wanted to call
}

这将根据 x 值的执行时类型确定执行时的类型参数,使用与 x 相同的类型推断> 将其作为其编译时 类型。该参数存在以进行类型推断。

请注意,与 Darin 不同,我相信这 是一种有用的技术 - 在完全相同的情况下,您最终会使用反射调用泛型方法。您可以使代码的这一个部分成为动态的,但保持代码的其余(从泛型向下)类型安全。它允许一个步骤是动态的 - 只是您不知道类型的单个位。

关于c# - 如何将动态用作泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10132760/

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