C# - 将 Nullable<T> 公开给 COM 的好方法

标签 c# .net com nullable

我们正在努力向 COM 公开程序集。

除其他事项外,我们经常使用可空值,例如 long?、DateTime? 等。这些是通用类型,不能向 COM 公开。

什么是 COM 的这些数据类型的良好替代品?

我们尝试了以下方法:

//Original CustomerID property in class
public long? CustomerID
{
   get;
   set;
}

//Explicit COM interface
long IComInterface.CustomerID
{
  get { return CustomerID.GetValueOrDefault(); }
  set { CustomerID = value; }
}

问题是,我们需要一种通过 COM 来回传递“null”的方法。使用 -1 或 0 之类的数字将不起作用,因为它们也是有效值。

我们不得不使用可空值 b/c 这些最初来 self 们的数据库模式。

最佳答案

在 COM 端使用 Variant (VT_DATE) 怎么样?如果将成员声明为对象,则应该能够传递 DateTime 或 null 并且 COM 互操作应该可以正常处理它。有关详细信息,请参阅 MSDN 上的以下内容。

Marshaling Object to Variant

关于C# - 将 Nullable<T> 公开给 COM 的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1987261/

相关文章:

c# - EF Core .net 6 Cosmos 迁移问题

java - 将域对象映射到 Java 中的 Web 服务代理对象

.net - .NET垃圾收集器的内部工作原理?

.NET 相当于 Delphi IStream 初始化

c# - 如何 "properly"覆盖基类方法?

c# - 在 asp.net 中,是否可以查看 httpcontext.Cache 中的内容?

c++ - QDrag 在拖动时被破坏

c# - COM 加载项 : Resolve the error DisconnectedContext in WinWord. exe

c# - ExcelReaderFactory,读取第一张纸

c# - C#中 "As"关键字有什么意义