Exemple #1
0
        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);
 }