我有带接口(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/