С# - Хороший способ открыть Nullable <T> для COM

Мы работаем над разоблачением сборки 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; }
}

Проблема в том, что нам нужен способ передать "null" вперед и назад через COM. Использование числа, такого как -1 или 0, не будет работать, потому что это также допустимые значения.

Нам нужно использовать nullables b/c, изначально полученные из нашей схемы базы данных.

Ответ 1

Как использовать Variant (VT_DATE) на стороне COM? Если вы объявляете объект как объект, вы должны иметь возможность передавать DateTime или null, а COM-интерфейс должен обрабатывать его в порядке. Подробнее см. Ниже в MSDN.

Маршалинг объекта для варианта