2010-08-18 15 views
6

tengo un método con un parámetro predeterminado:Cómo exportar tipos genéricos a COM? Tipo exporteder biblioteca encontró una instancia de tipo genérico en una firma

void Test(int? iRange = null); 

Cuando se trata de exponer a mi clase de COM, recibo una advertencia:

Tipo exportador biblioteca encontrado una instancia de tipo genérico en una firma. El código genérico no se puede exportar a COM. ¿Es posible cómo exponer este método?

Editar En este momento, creo que esto tiene que ver con el parámetro anulable (no el parámetro por defecto) Copié la firma del método original de forma incorrecta.

+0

¿Tiene preguntas sobre los parámetros predeterminados o los tipos genéricos, o ambos? –

+0

Mi error ... el parámetro debería haber sido "int? IRange", no "int iRange". El problema es con el tipo anulable, que es un genérico – Jeremy

Respuesta

9

Me encontré con algo así hace un par de años, COM no es compatible con los genéricos y todo lo que expone a COM debe ser libre de genéricos.

En este caso "int? Irange" es sólo la abreviatura de "anulable <int> Irange", y como tales causas del error. Puede que tenga que encontrar otra forma de expresar lo que sea que use nulo para expresar. Podría agregar otro argumento o usar un valor de iRange (0, -1 e int.MinValue) que de otra manera no se utilizaría como posibilidades: recomendaría proporcionar el valor como const si elige esta opción).

Cuestiones relacionadas