本文整理汇总了C#中GLib.GetType方法的典型用法代码示例。如果您正苦于以下问题:C# GLib.GetType方法的具体用法?C# GLib.GetType怎么用?C# GLib.GetType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GLib
的用法示例。
在下文中一共展示了GLib.GetType方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ConnectFunc
public void ConnectFunc(Builder builder, GLib.Object objekt, string signal_name, string handler_name, GLib.Object connect_object, GLib.ConnectFlags flags)
{
/* search for the event to connect */
System.Reflection.MemberInfo[] evnts = objekt.GetType ().
FindMembers (System.Reflection.MemberTypes.Event,
System.Reflection.BindingFlags.Instance
| System.Reflection.BindingFlags.Static
| System.Reflection.BindingFlags.Public
| System.Reflection.BindingFlags.NonPublic,
new System.Reflection.MemberFilter (SignalFilter), signal_name);
foreach (System.Reflection.EventInfo ei in evnts) {
bool connected = false;
System.Reflection.MethodInfo add = ei.GetAddMethod ();
System.Reflection.ParameterInfo[] addpi = add.GetParameters ();
if (addpi.Length == 1) { /* this should be always true, unless there's something broken */
Type delegate_type = addpi[0].ParameterType;
/* look for an instance method */
if (connect_object != null || handler != null)
try {
Delegate d = Delegate.CreateDelegate (delegate_type, connect_object != null ? connect_object : handler, handler_name);
add.Invoke (objekt, new object[] { d } );
connected = true;
} catch (ArgumentException) { /* ignore if there is not such instance method */
}
/* look for a static method if no instance method has been found */
if (!connected && handler_type != null)
try {
Delegate d = Delegate.CreateDelegate (delegate_type, handler_type, handler_name);
add.Invoke (objekt, new object[] { d } );
connected = true;
} catch (ArgumentException) { /* ignore if there is not such static method */
}
if (!connected) {
string msg = ExplainError (ei.Name, delegate_type, handler_type, handler_name);
throw new HandlerNotFoundException (msg, handler_name, signal_name, ei, delegate_type);
}
}
}
}