Boo.Lang.Runtime.SliceDispatcherFactory.CreateGetter C# (CSharp) Метод

CreateGetter() приватный Метод

private CreateGetter ( MemberInfo member ) : Dispatcher
member System.Reflection.MemberInfo
Результат Dispatcher
        private Dispatcher CreateGetter(MemberInfo member)
        {
            switch (member.MemberType)
            {
                case MemberTypes.Field:
                    {
                        FieldInfo field = (FieldInfo)member;
                        return
                            delegate(object o, object[] arguments) { return RuntimeServices.GetSlice(field.GetValue(o), "", arguments); };
                    }
                case MemberTypes.Property:
                    {
                        MethodInfo getter = ((PropertyInfo) member).GetGetMethod(true);
                        if (null == getter) throw MissingField();

                        if (getter.GetParameters().Length > 0) return EmitMethodDispatcher(getter);

                        // TODO: remove the reflection invocation getter.Invoke from the path

                        // otherwise its a simple property and the slice
                        // should be applied to the return value
                        return
                            delegate(object o, object[] arguments) { return RuntimeServices.GetSlice(getter.Invoke(o, null), "", arguments); };
                    }
                default:
                    {
                        throw MissingField();
                    }
            }
        }

Same methods

SliceDispatcherFactory::CreateGetter ( ) : Dispatcher