예제 #1
0
파일: ComBinder.cs 프로젝트: z77ma/runtime
        internal static IList <KeyValuePair <string, object> > GetDynamicDataMembers(object value, IEnumerable <string> names)
        {
            Requires.NotNull(value, nameof(value));
            Requires.Condition(IsComObject(value), nameof(value));

            return(ComObject.ObjectToComObject(value).GetMembers(names));
        }
예제 #2
0
        /// <summary>
        /// Gets the member names of the data-like members associated with the object.
        /// This function can operate only with objects for which <see cref="IsComObject"/> returns true.
        /// </summary>
        /// <param name="value">The object for which member names are requested.</param>
        /// <returns>The collection of member names.</returns>
        internal static IList <string> GetDynamicDataMemberNames(object value)
        {
            Requires.NotNull(value, nameof(value));
            Requires.Condition(IsComObject(value), nameof(value));

            return(ComObject.ObjectToComObject(value).GetMemberNames(true));
        }
예제 #3
0
        private static void EmitLoadArg(ILGenerator il, int index)
        {
            Requires.Condition(index >= 0, nameof(index));

            switch (index)
            {
            case 0:
                il.Emit(OpCodes.Ldarg_0);
                break;

            case 1:
                il.Emit(OpCodes.Ldarg_1);
                break;

            case 2:
                il.Emit(OpCodes.Ldarg_2);
                break;

            case 3:
                il.Emit(OpCodes.Ldarg_3);
                break;

            default:
                if (index <= byte.MaxValue)
                {
                    il.Emit(OpCodes.Ldarg_S, (byte)index);
                }
                else
                {
                    il.Emit(OpCodes.Ldarg, index);
                }
                break;
            }
        }
예제 #4
0
 private static void EmitLoadArg(ILGenerator il, int index)
 {
     Requires.Condition(index >= 0, nameof(index));
     il.Emit(OpCodes.Ldarg, index);
 }