c# - 从 C++/CLI 托管访问 C# 重载方法

标签 c# c++ .net managed-c++

我有带接口(interface)的C#类库

public interface IInterface
{
    public IObject Get(SomeClass a);
    public IObject Get(SomeClass a, SomeClass1 b);
    public IObject Get(SomeClass a, SomeClass2 c);
}

在我的 C++ 托管代码中,我需要使用 SomeClass2 arg 调用第三种方法。 但是 VS 显示错误

cannot convert parameter 2 from 'SomeClass2 ^' to 'SomeClass1 ^'

是否可以从 C++ 调用重载方法?

最佳答案

我这样做没有任何问题(不能把它放在评论中):

namespace ClassLibrary1
{
   public class SomeClass {}

   public class SomeClass1 {}

   public class SomeClass2 {}

   public interface IInterface
   {
      object Get(SomeClass a);
      object Get(SomeClass a, SomeClass1 b);
      object Get(SomeClass a, SomeClass2 c);
   }

   public class Implementation : IInterface
   {   
      public object Get(SomeClass a)
      {
         return null;
      }

      public object Get(SomeClass a, SomeClass1 b)
      {
         return null;
      }

      public object Get(SomeClass a, SomeClass2 c)
      {
         return null;
      }
   }
}

和 C++/CLI 代码

using namespace System;
using namespace ClassLibrary1;

int main(array<System::String ^> ^args)
{
   auto o = gcnew Implementation();
   o->Get(gcnew SomeClass());
   o->Get(gcnew SomeClass(), gcnew SomeClass1());
   o->Get(gcnew SomeClass(), gcnew SomeClass2());

    Console::WriteLine(L"Hello World");
    return 0;
}

编译没有问题。

关于c# - 从 C++/CLI 托管访问 C# 重载方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19835396/

相关文章:

C# .NET MySQL (MariaDB) 不保存数据但返回成功

c++: noskipws 延迟了某些数据类型的文件结束检测

c++ - 为什么我得到这个 "error: undefined reference to ` qt_version_tag'”?

c# - 注入(inject)的依赖项应该公开访问还是私有(private)?

c# - WPF 以编程方式绑定(bind)

c# - Microsoft.Exchange.WebServices 在 VS2010 中不工作

c# - 在哪里可以找到 IIS 管理器连接字符串的位置

c# - 如何对 ToolStripItem 集合中的项目进行排序?

c# - 属性 setter 中的 StackOverflowException

c++ - 组装拆卸