2010-08-18 37 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可以想象爲可能性 - 如果您選擇此選項,我會建議將該值作爲常量提供)。