2010-08-18 101 views
6

我有一个默认参数的方法:如何将通用类型导出到COM?类型库exporteder在签名中遇到泛型类型实例

void Test(int? iRange = null); 

当试图揭露我的同班同学COM,我得到一个警告:

类型库导出在签名中遇到了泛型类型实例。通用代码可能不会导出到COM。是否有可能如何公开这种方法?

编辑 对不起,我认为这是与可空参数(而不是默认参数),我错误地复制了原始方法签名。

+0

是你的问题关于默认参数或泛型类型或两者? – 2010-08-18 15:03:31

+0

我的错误...参数应该是“int?iRange”,而不是“int iRange”。问题是可空类型,这是一个泛型 – Jeremy 2010-08-18 19:11:12

回答

9

几年前,我遇到过类似这样的事情,COM不支持泛型,所以你公开给COM的任何东西都必须是泛型自由的。

在这种情况下,“int?iRange”只是“Nullable <int> iRange”的简写,并且因此会导致错误。您可能需要找到另一种方式来表达您使用null表达的任何内容。你可以添加另一个参数或使用其他未使用的iRange值(0,-1和int.MinValue可以想象为可能性 - 如果您选择此选项,我会建议将该值作为常量提供)。