コード例 #1
0
        public void EmitInitializeLocal(int index, Type type)
        {
            object value = ScriptingRuntimeHelpers.GetPrimitiveDefaultValue(type);

            if (value != null)
            {
                Emit(new InitializeLocalInstruction.ImmutableValue(index, value));
            }
            else if (type.IsValueType)
            {
                Emit(new InitializeLocalInstruction.MutableValue(index, type));
            }
            else
            {
                Emit(InitReference(index));
            }
        }
コード例 #2
0
        public static object GetDefaultValue(this ParameterInfo info)
        {
#if SILVERLIGHT && CLR2 // CF doesn't support Optional nor DefaultParameterValue attributes
            if (info.IsOptional)
            {
                return(info.ParameterType == typeof(object) ? Missing.Value : ScriptingRuntimeHelpers.GetPrimitiveDefaultValue(info.ParameterType));
            }

            var defaultValueAttribute = info.GetCustomAttributes(typeof(DefaultParameterValueAttribute), false);
            if (defaultValueAttribute.Length > 0)
            {
                return(((DefaultParameterValueAttribute)defaultValueAttribute[0]).Value);
            }

            return(null);
#else
            return(info.DefaultValue);
#endif
        }