从C+访问C#重载方法+/CLI管理

从C+访问C#重载方法+/CLI管理,c#,c++,.net,managed-c++,C#,C++,.net,Managed C++,我有一个带接口的C#类库 public interface IInterface { public IObject Get(SomeClass a); public IObject Get(SomeClass a, SomeClass1 b); public IObject Get(SomeClass a, SomeClass2 c); } 在我的C++托管代码中,我需要用SoCeCass2 ARG调用第三方法。 但是VS显示了一个错误 cannot convert p

我有一个带接口的C#类库

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

在我的C++托管代码中,我需要用SoCeCass2 ARG调用第三方法。 但是VS显示了一个错误

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

是否有可能调用C++中的重载方法?< /p> < p>我没有任何问题(不能把它放在注释中):

以及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;
}
使用名称空间系统;
使用命名空间ClassLibrary1;
int main(数组^args)
{
自动o=gcnew实现();
o->Get(gcnewsomeclass());
o->Get(gcnewsomeclass(),gcnewsomeclass1());
o->Get(gcnew SomeClass(),gcnew SomeClass 2());
控制台::WriteLine(L“Hello World”);
返回0;
}

编译没有问题。

我在这方面没有任何问题(无法将其放入注释中):

以及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;
}
使用名称空间系统;
使用命名空间ClassLibrary1;
int main(数组^args)
{
自动o=gcnew实现();
o->Get(gcnewsomeclass());
o->Get(gcnewsomeclass(),gcnewsomeclass1());
o->Get(gcnew SomeClass(),gcnew SomeClass 2());
控制台::WriteLine(L“Hello World”);
返回0;
}

编译没有问题。

问题是其中一个参数是System::DateTime,它是值类型,在我的代码中,我将它声明为引用

System::Date^ date = ...

当我改变它的do值类型时,就可以调用任何方法了。为什么它调用带有引用类型DateTime的方法没有任何问题我不知道有一个问题,参数是System::DateTime,它是值类型,在我的代码中我将它声明为引用

System::Date^ date = ...

当我改变它的do值类型时,就可以调用任何方法了。为什么它调用引用类型DateTime的方法没有任何问题我不知道

你是指c++/cli吗?你是指c++/cli吗?是的,你是对的。但是如果两个项目不在一个解决方案中,而C#part是release,它只显示并接受methodsOk中的一个,所以我从解决方案中删除了类库,构建了它的发布配置,向DLL(而不是项目)添加了一个程序集引用,并且仍然工作得很好。是的,你是对的。但是,如果两个项目不在一个解决方案中,并且C#part是发行版,那么它只显示并接受methodsOk中的一个,因此我从解决方案中删除了类库,构建了它的发行版配置,向DLL(而不是项目)添加了一个程序集引用,并且仍然工作得很好。谢谢,谢谢,谢谢。这花了我很长时间,如果不是这样的话,时间会更长。谢谢,谢谢,谢谢。这花了我很长时间,如果不是这样的话,时间会更长。