[Gtk-sharp-list] g_signal_connect_data flags again

Gonzalo Paniagua Javier gonzalo@ximian.com
15 Mar 2003 22:40:57 +0100


--=-O6+7oTmVsvFaw9dk+zsm
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit

El sáb, 15 de 03 de 2003 a las 22:10, Miguel de Icaza escribió:
> > And how do you get that attribute from the delegate?
> 
> You fetch the Invoke method from the delegate, fetch the MethodInfo,
> retrieve the custom attributes.

That works for the simplest case:

Delegate d = new EventHandler (MyMethod);
obj.evnt += d;

but if you do:
Delegate d = new EventHandler (MyMethod);
d = Delegate.Combine (d, new EventHandler (OtherMethod));

it does not work.

I've attached a test case.

-Gonzalo



-- 
"The wireless telegraph is not dificult to understand. The ordinary
telegraph is like a very long cat. You pull the tail in New York and it
meows in Los Angeles. The wireless is the same, only without the cat"
					-Albert


--=-O6+7oTmVsvFaw9dk+zsm
Content-Disposition: attachment; filename=migattr.cs
Content-Type: text/plain; name=migattr.cs; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

using System;
using System.Reflection;

class AfterAttribute : Attribute
{
}

class MigAttr
{
	[After]
	public static void MyMethod (object o, EventArgs args)
	{
	}
	
	public static void OtherMethod (object o, EventArgs args)
	{
	}

	static void Main ()
	{
		Type t = typeof (MigAttr);
		Delegate d = new EventHandler (MyMethod);
		d = Delegate.Combine (d, new EventHandler (OtherMethod));
		MethodInfo m = t.GetMethod ("MyMethod");
		foreach (Attribute attr in m.GetCustomAttributes (false))
			Console.WriteLine (attr);

		m = d.Method;
		foreach (Attribute attr in m.GetCustomAttributes (false))
			Console.WriteLine (attr);
	}
}


--=-O6+7oTmVsvFaw9dk+zsm--