Browse Source

Override the specific method named in the OverrideNativeAttribute

pull/1/head
Alex Corrado 15 years ago
parent
commit
462175cfc7
  1. 15
      src/Mono.VisualC.Interop/ABI/VTable.cs

15
src/Mono.VisualC.Interop/ABI/VTable.cs

@ -134,19 +134,26 @@ namespace Mono.VisualC.Interop.ABI { @@ -134,19 +134,26 @@ namespace Mono.VisualC.Interop.ABI {
public static bool BindToSignatureAndAttribute (MemberInfo member, object obj)
{
bool result = BindToSignature (member, obj);
if (member.GetCustomAttributes (typeof (OverrideNativeAttribute), true).Length != 1)
var overrideNative = member.GetCustomAttributes (typeof (OverrideNativeAttribute), true);
if (overrideNative.Length == 0)
return false;
return result;
var name = ((OverrideNativeAttribute)overrideNative [0]).NativeMethod ?? member.Name;
return BindToSignature (member, obj, name);
}
public static bool BindToSignature (MemberInfo member, object obj)
{
return BindToSignature (member, obj, member.Name);
}
public static bool BindToSignature (MemberInfo member, object obj, string nativeMethod)
{
MethodInfo imethod = (MethodInfo) obj;
MethodInfo candidate = (MethodInfo) member;
if (!candidate.Name.Equals (imethod.Name))
if (nativeMethod != imethod.Name)
return false;
ParameterInfo[] invokeParams = imethod.GetParameters ();

Loading…
Cancel
Save