internal DuckMethodBindingOption GetBestMatch(MethodInfo mi) { var matches = from cmi in _realSubjectType.GetMethods() where cmi.Name == mi.Name let mbo = DuckMethodBindingOption.Get(mi, cmi) where mbo.Bindable orderby mbo.Score descending select mbo; return(matches.FirstOrDefault() ?? DuckMethodBindingOption.NotBindable); }
void PutMethodExistsOnStack(MethodInfo mi, ILGenerator gen) { var matches = from cmi in _realSubjectType.GetMethods() where cmi.Name == mi.Name let mbo = DuckMethodBindingOption.Get(mi, cmi) where mbo.Bindable orderby mbo.Score descending select mbo; var bestMatch = matches.FirstOrDefault(); gen.Emit(bestMatch != null ? OpCodes.Ldc_I4_1 : OpCodes.Ldc_I4_0); }
public void CanGetNotBindable() { Assert.That(DuckMethodBindingOption.Get(GetMethod("VoidMethodZeroArgA"), GetMethod("IntMethodZeroArgB")).Bindable, Is.Not.True); }
public void CanGetStandardMethodBinding() { Assert.That(DuckMethodBindingOption.Get(GetMethod("VoidMethodZeroArgA"), GetMethod("VoidMethodZeroArgB")).Bindable); }