public ProjectStatus(string name, string category, ProjectActivity activity, IntegrationStatus buildStatus, ProjectIntegratorState status, string webURL, DateTime lastBuildDate, string lastBuildLabel, string lastSuccessfulBuildLabel, DateTime nextBuildTime, string buildStage, string queue, int queuePriority, ParameterBase[] parameters) : this(name, category, activity, buildStatus, status, webURL, lastBuildDate, lastBuildLabel, lastSuccessfulBuildLabel, nextBuildTime, buildStage, queue, queuePriority, (parameters == null) ? new List<ParameterBase>() : new List<ParameterBase>(parameters)) { }
 private void GenerateProperty(TypeBuilder typeBuilder, ParameterBase parameter, ModuleBuilder moduleBuilder)
 {
     Type dataType = parameter.DataType;
     if ((parameter.AllowedValues != null) && (parameter.AllowedValues.Length > 0))
     {
         dataType = GenerateEnumeration(parameter.Name + "Enum", parameter.AllowedValues, moduleBuilder);
     }
     FieldBuilder fieldBuilder = typeBuilder.DefineField(parameter.Name + "Field", dataType, FieldAttributes.Private);
     PropertyBuilder propertyBuilder = typeBuilder.DefineProperty(parameter.Name, PropertyAttributes.HasDefault, dataType, null);
     MethodBuilder propertyGetBuilder = typeBuilder.DefineMethod("get_" + parameter.Name,
         MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig,
         dataType,
         null);
     ILGenerator getGenerator = propertyGetBuilder.GetILGenerator();
     getGenerator.Emit(OpCodes.Ldarg_0);
     getGenerator.Emit(OpCodes.Ldfld, fieldBuilder);
     getGenerator.Emit(OpCodes.Ret);
     MethodBuilder propertySetBuilder = typeBuilder.DefineMethod("get_" + parameter.Name,
         MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig,
         null,
         new Type[] { dataType });
     ILGenerator setGenerator = propertySetBuilder.GetILGenerator();
     setGenerator.Emit(OpCodes.Ldarg_0);
     setGenerator.Emit(OpCodes.Ldarg_1);
     setGenerator.Emit(OpCodes.Stfld, fieldBuilder);
     setGenerator.Emit(OpCodes.Ret);
     AssociateAttribute(propertyBuilder, typeof(DescriptionAttribute), parameter.Description);
     AssociateAttribute(propertyBuilder, typeof(DisplayNameAttribute), parameter.DisplayName);
     propertyBuilder.SetGetMethod(propertyGetBuilder);
     propertyBuilder.SetSetMethod(propertySetBuilder);
 }