gpt4 book ai didi

c# - 制作具有多种类型的泛型

转载 作者:太空狗 更新时间:2023-10-29 21:41:37 26 4
gpt4 key购买 nike

我有一段代码,有时我需要创建一个新的泛型类型,但泛型参数的数量未知。例如:

public object MakeGenericAction(Type[] types)
{
return typeof(Action<>).MakeGenericType(paramTypes);
}

问题是,如果我的数组中有多个类型,那么程序就会崩溃。在短期内,我想出了这样的方法作为权宜之计。

public object MakeGenericAction(Type[] types)
{
if (types.Length == 1)
{
return typeof(Action<>).MakeGenericType(paramTypes);
}
else if (types.Length ==2)
{
return typeof(Action<,>).MakeGenericType(paramTypes);
}
..... And so on....
}

这确实有效,而且很容易涵盖我的场景,但它看起来真的很老套。有更好的方法来处理这个问题吗?

最佳答案

在那种情况下,是的:

Type actionType = Expression.GetActionType(types);

这里的问题是您可能会使用速度很慢的 DynamicInvoke。

Action<object[]>那么按索引访问可能优于 Action<...>用 DynamicInvoke 调用

关于c# - 制作具有多种类型的泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6268958/

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