C# – 将Nullable 暴露给COM的好方法

我们正在努力将程序集暴露给COM。

除此之外,我们频率使用可空值,例如long?,DateTime?等。这些是generics类型,不能暴露给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之类的数字将不起作用,因为它们也是有效值。

我们不得不使用nullables b / c这些最初来自我们的数据库模式。

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

将变量编组到变体