namespace System.Reflection.Emit {
+#if NET_2_0
+ [Obsolete ("An alternate API is available: Emit the MarshalAs custom attribute instead.")]
+ [ComVisible (true)]
+#endif
[Serializable]
public sealed class UnmanagedMarshal {
private int count;
return res;
}
+ // sizeConst and sizeParamIndex can be -1 meaning they are not specified
internal static UnmanagedMarshal DefineLPArrayInternal (UnmanagedType elemType, int sizeConst, int sizeParamIndex) {
UnmanagedMarshal res = new UnmanagedMarshal (UnmanagedType.LPArray, elemType);
res.count = sizeConst;
attr.MarshalCookie = mcookie;
attr.MarshalType = marshaltype;
attr.MarshalTypeRef = marshaltyperef;
- attr.SizeConst = count;
- attr.SizeParamIndex = (short)param_num;
+ if (count == -1)
+ attr.SizeConst = 0;
+ else
+ attr.SizeConst = count;
+ if (param_num == -1)
+ attr.SizeParamIndex = 0;
+ else
+ attr.SizeParamIndex = (short)param_num;
return attr;
}
}