[Mono-devel-list] [Patch] CustomAttributeData support
    Ben Maurer 
    bmaurer at ximian.com
       
    Wed Apr 20 12:07:04 EDT 2005
    
    
  
For CustomAttributeTypedArgument, you could just add a StructLayout for
sequential. Then in Unmanaged code, rather than:
+static MonoObject*
+create_cattr_typed_arg (MonoType *t, MonoObject *val)
+{
+	static MonoClass *klass;
+	static MonoMethod *ctor;
+	MonoObject *retval;
+	void *params [2], *unboxed;
+
+	if (!klass)
+		klass = mono_class_from_name (mono_defaults.corlib,
"System.Reflection", "CustomAttributeTypedArgument");
+	if (!ctor)
+		ctor = mono_class_get_method_from_name (klass, ".ctor", 2);
+	
+	params [0] = mono_type_get_object (mono_domain_get (), t);
+	params [1] = val;
+	retval = mono_object_new (mono_domain_get (), klass);
+	unboxed = mono_object_unbox (retval);
+	mono_runtime_invoke (ctor, unboxed, params, NULL);
+
+	return retval;
+}
you can just have
MonoCustomAttributeTYpedArgument x;
x.t = t;
x.val = val;
This would also avoid having the array that you have to unbox, which
would greatly  simplify the code. Ditto for
CustomAttributeNamedArgument.
I don't think you should add the ToString methods that you did.
Corcompare will notice the difference.
-- Ben
    
    
More information about the Mono-devel-list
mailing list