c# - C++/Cli 向托管 Action<T1,T2> 对象添加回调

标签 c# delegates c++-cli

在 C# 类中,我有以下内容:

public class Myclass
{
  public Action<string, string> MyDelegate { get; set;}

  public void CallingAction()
  {
    MyDelegate("string1", "string2");
  }
}

在 C++/Cli 中,我想向委托(delegate)添加一个新函数。

public ref class MyCliClass
{
  public :
  MyCliClass()
  {
    MyClass^ myClassInstance = gcnew MyClass();
    MyCliDelegate^ myDelegateInstance = gcnew MyCliDelegate(this, &MyCliClass::FunctionToCall);
    myClassInstance->MyDelegate += myDelegateInstance;
  }

  void FunctionToCall(string^ string1, string^ string2)
  {
    // Some stuff to do
  }

  private :
  void delegate MyCliDelegate(string^,string^);
}

这给了我错误:

error C3365: operator '+' : differing operands of type 'System::Action<T1, T2> ^' and 'MyCliClass::FunctionToCall^'

我如何简单地将“FunctionToCall”添加到 C# Delegate,以便在调用“CallingAction”时也调用“FunctionToCall”?

谢谢

编辑/回答 这是新的 Cli/Class

public ref class MyCliClass
{
  public :
  MyCliClass()
  {
    MyClass^ myClassInstance = gcnew MyClass();
    myClassInstance->MyDelegate += gcnew Action<string^,string^>^(this, &MyCliClass::FunctionToCall);
  }

  void FunctionToCall(string^ string1, string^ string2)
  {
    // Some stuff to do
  }
}

最佳答案

等效的委托(delegate)类型不可转换。
您需要将委托(delegate)实例声明为 Action<string^, string^>^ .

关于c# - C++/Cli 向托管 Action<T1,T2> 对象添加回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13146810/

相关文章:

ios - 使用两个委托(delegate)

ios - 自定义委托(delegate)问题

.net - InternalsVisibleTo 不适用于托管 C++

c# - 用 C++ CLI 编写的 DOTNET 包装器 native 传递结构的最佳方式?

C# 延迟加载自动属性

c# - 如何使用 VB.NET 以编程方式在 Richtextbox 中添加粗体文本

jQuery 委托(delegate)关闭 Boxy 对话框

windows - 在 C++ 中模拟 Alt Tab 键盘按下以启动 Fast Switch 窗口

c# - 已编辑行的自定义样式 GridView ASP.NET

c# - 在 MVC 3 C# 中将日期时间更改为日期