加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C# – 将Nullable显示给COM的好方法

发布时间:2020-12-15 06:49:02 所属栏目:百科 来源:网络整理
导读:我们正在将一个程序集暴露给COM. 除了别的以外,我们使用诸如long?,DateTime?等可空值,这些是通用类型,不能暴露于COM. 什么是COM的这些数据类型的好替代品? 我们尝试了以下几点: //Original CustomerID property in classpublic long? CustomerID{ get; s
我们正在将一个程序集暴露给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的数字将不起作用,因为它们也是有效的值.

我们不得不使用这些最初来自我们的数据库模式的可空对象.

解决方法

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

Marshaling Object to Variant

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读