代码之家  ›  专栏  ›  技术社区  ›  nietras

C++CLI使用动作<,…>和FUNC<…>未支持的?

  •  4
  • nietras  · 技术社区  · 15 年前

    在C++/CLI中,系统的命名空间中的动作和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 
    

    只有单参数操作有效:

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

    任何人,都知道为什么或是什么让这项工作失败。我使用的是Visual Studio 2008,该项目的目标框架为3.5。

    2 回复  |  直到 14 年前
        1
  •  8
  •   JaredPar    15 年前

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

    在3.5框架中,所有 芬克 (通用或非通用)驻留在system.core.dll中。对于版本 行动 具有2个或更多通用参数。 行动 Action<T1,T2> 但是在mscorlib。

    在4.0框架中,所有 芬克 行动 搬到了mscorlib。有类型转发器插入到system.core中,现在指向mscorlib。

    Silverlight4.0更接近于3.5框架解决方案。

    确保您的解决方案引用了适当的DLL。

        2
  •  8
  •   Brandon Cuff    15 年前

    以下是在mscorlib中定义的-

    Action
    Action<T>
    

    但以下是在system.core中定义的。

    Action<T1, T2>
    Func<T1, T2>
    

    您可能缺少对该程序集的引用。