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)); } }
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 }