不支持 C++/CLI 使用 Action<...,...> 和 Func<...> 吗?

2023-12-31

看起来 C++/CLI 的 System 命名空间中不支持 Action 和 Func 委托。至少对于多个​​通用参数来说不是这样,例如:

System::Action<int, int>^ action = nullptr;
System::Func<int, int>^ func = nullptr;

两者都会导致错误,例如:

error C2977: 'System::Action' : too many generic arguments  
error C2955: 'System::Action' : use of class generic requires generic argument list 

只有单个参数 Action 有效:

System::Action<int>^ action = nullptr;

任何人都知道为什么要完成这项工作,或者缺少什么。我正在使用 Visual Studio 2008,该项目的目标框架为 3.5。


的位置Action and Func类型根据您使用的框架版本而不同。

3.5框架中的所有定义Func(通用或非通用)驻留在 System.Core.dll 中。对于以下版本也是如此Action具有 2 个或更多通用参数。Action and Action<T1,T2>虽然在 mscorlib 中。

在4.0框架中的所有定义Func and Action移至 mscorlib。 System.Core 中插入了类型转发器,现在它们指向 mscorlib。

Silverlight 4.0更接近3.5框架解决方案。

确保您有对适合您的解决方案的 DLL 的引用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不支持 C++/CLI 使用 Action<...,...> 和 Func<...> 吗? 的相关文章

随机推荐