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