C# - Good way to expose Nullable to COM

2019-04-05 20:00发布

We are working on exposing an assembly to COM.

Among other things, we frequency use nullable values such as long?, DateTime?, etc. These are generic types and can't be exposed to COM.

What is a good substitute for these data types for COM?

We have tried the following:

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

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

The problem is, we need a way to pass "null" back and forth through COM. Using a number like -1 or 0 won't work because these are valid values as well.

We are having to use nullables b/c these originally came from our database schema.

1条回答
仙女界的扛把子
2楼-- · 2019-04-05 20:36

What about using a Variant (VT_DATE) on the COM side? If you declare the member as object, you should be able to pass a DateTime or null and COM interop should handle it ok. See the following on MSDN for more details.

Marshaling Object to Variant

查看更多
登录 后发表回答