【发布时间】:2010-01-01 06:27:33
【问题描述】:
我们正在努力向 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 这些最初来自我们的数据库架构。
【问题讨论】:
-
你试过了吗?因为
Nullable<T>是一个结构体? -
tbleexp(或标记为“注册 COM 互操作”时的 Visual Studio)失败,给出无法导出泛型类型的消息。