我们正在努力向 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 上的以下内容。
关于C# - 将 Nullable<T> 公开给 COM 的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1987261/