I wrote: > I tried to use SetCustomAttribute to emit a > MarshalAsAttribute, but that hangs (!) > > I looked at the Rotor code and SetCustomAttribute actually has support > for pseudo-custom attributes, so in theory it should work, > but it looks like there is a bug somewhere in the runtime.
I don't know if this is any use to you, but I just tried it on Whidbey, and there it does work. Here is the code I used: ConstructorInfo ci = typeof(MarshalAsAttribute).GetConstructor(new Type[] { typeof(UnmanagedType) }); CustomAttributeBuilder cb = new CustomAttributeBuilder(ci, new object[] { UnmanagedType.LPArray }, new PropertyInfo[0], new object[0], new FieldInfo[] { typeof(MarshalAsAttribute).GetField("SizeParamIndex") }, new object[] { (short)0 }); paraBld.SetCustomAttribute(cb); This yields: .method public abstract virtual instance void SetArray([in] int32 count, [in] int32[] marshal([ + 0]) 'array') cil managed So the good news is that they fixed the bug, the bad news is that you have to wait a while before the fix becomes available :-( Regards, Jeroen =================================== This list is hosted by DevelopMentorŪ http://www.develop.com Some .NET courses you may be interested in: NEW! Guerrilla ASP.NET, 26 Jan 2004, in Los Angeles http://www.develop.com/courses/gaspdotnetls View archives and manage your subscription(s) at http://discuss.develop.com