C# 呼叫C++/CLI函数,该函数具有可为null的datetime参数,使用C返回的可为null的datetime#

C# 呼叫C++/CLI函数,该函数具有可为null的datetime参数,使用C返回的可为null的datetime#,c#,c++-cli,C#,C++ Cli,我有一个C#类(这个类托管在一个NetCoreDLL中) C++/CLI中的两个函数 public ref class class2 { public: class2(class1^ one) { _one = one; } function1(System::Nullable<System::DateTime> dateTime) { } function2() { function1(_one->MyDateTime

我有一个C#类(这个类托管在一个NetCoreDLL中)

C++/CLI中的两个函数

public ref class class2
{
   public:
  class2(class1^ one)
  {
      _one = one;
   }
  function1(System::Nullable<System::DateTime> dateTime)
  {
  }
  function2()
  {
   function1(_one->MyDateTime);
  }
  private:
  class1 ^ _one;
}

调用function2时,我收到一条错误消息,说参数列表不匹配。编译器抱怨“one.MyDateTime”的类型是
System:Nullable
,而function1需要
“System::Nullable”

您尝试过示例代码吗?如果我在你的C++/CLI函数上加上void return(它们什么都不返回),在你的C#
two
实例化上加上分号,那么我就可以编译了。(VS2017-.NET 4.6.2)请测试您的示例在语法上是否正确,并展示您期望的行为。我想我现在知道问题的原因了。然而,我还没有一个解决方案。基本上,我有三个项目(C,net核心访问数据库,C++ +CLI访问低级别硬件C++代码,以及作为服务的C.NET .NET 462遗留代码)。当C++/CLI调用C#net核心DLL时出现问题。然而,在这个过程中,编译器将System::Nullable转换为System::Nullable。如果我用.net462 DLL替换C#net核心DLL,问题就消失了。现在,我想知道从C++/CLI调用net core DLL中函数的最佳方式是什么。返回给您带来麻烦的可空对象的.net core类和方法是什么?“.net core”与“.net”是不同的运行时。使库与两者兼容的正确方法是以“.NET标准”为目标。我无法编译调用function1的C++/CLI function2。编译器抱怨datetime参数。我认为最根本的问题可能是NetCore不支持C++/CLI。
public ref class class2
{
   public:
  class2(class1^ one)
  {
      _one = one;
   }
  function1(System::Nullable<System::DateTime> dateTime)
  {
  }
  function2()
  {
   function1(_one->MyDateTime);
  }
  private:
  class1 ^ _one;
}
class1 one = new class1();    
class2 two = new class2(one)
two.function2();