it does not look like there is support for the Action and Func delegates in the System namespace in C++/CLI. At least not for multiple generic arguments such as:
System::Action<int, int>^ action = nullptr;
System::Func<int, int>^ func = nullptr;
Both result in errors such as:
error C2977: 'System::Action' : too many generic arguments
error C2955: 'System::Action' : use of class generic requires generic argument list
Only single argument Action works:
System::Action<int>^ action = nullptr;
Anyone, knows why or what is missing to make this work. I am using Visual Studio 2008 and the project has target framework 3.5.
The following are defined in mscorlib -
But the following are defined in System.Core.
You're probably missing a reference to that assembly.
The location of the
Action
andFunc
types is different depending on the framework version you are using.In the 3.5 framework all definitions of
Func
(generic or not generic) reside in System.Core.dll. This is also true for versions ofAction
with 2 or more generic parameters.Action
andAction<T1,T2>
are in mscorlib though.In the 4.0 framework all of the definitions of
Func
andAction
moved to mscorlib. There are type forwarders inserted into System.Core which point back to mscorlib now.Silverlight 4.0 is closer to the 3.5 framework solution.
Make sure you have a reference to the appropriate DLL for your solution.