예제 #1
0
파일: ExVar.cs 프로젝트: peterpavles/Conari
        /// <summary>
        /// Magic methods. Invoking.
        /// </summary>
        /// <![CDATA[
        ///     `name<return_type>()`
        /// ]]>
        /// <param name="binder"></param>
        /// <param name="args"></param>
        /// <param name="result"></param>
        /// <returns></returns>
        public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
        {
            if (args?.Length > 0)
            {
                throw new ArgumentException("Arguments are not allowed for this method.");
            }
            Type[] generic = binder.GetGenericArgTypes().ToArray();

            if (generic.Length > 1)
            {
                throw new ArgumentException("No more than one type (as a return type) allowed for this method.");
            }

            result = getFieldDLR(
                (generic.Length < 1) ? typeof(DefaultType) : generic[0],
                binder.Name
                );
            return(true);
        }