开发者

C# - Good way to expose Nullable<T> to COM

开发者 https://www.devze.com 2022-12-15 09:09 出处:网络
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.

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? Cust开发者_开发百科omerID
{
   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.


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

0

精彩评论

暂无评论...
验证码 换一张
取 消