看起来 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(使用前将#替换为@)