C# - 将Nullable <t>暴露给COM的好方法</t>

时间:2009-12-31 21:55:19

标签: 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之类的数字将不起作用,因为它们也是有效值。

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

1 个答案:

答案 0 :(得分:8)

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

Marshaling Object to Variant