protected override void CacheMetadata(CodeActivityMetadata metadata) { bool isRequired = false; if (!typeof(TOperand).IsValueType) { metadata.AddValidationError(SR.TypeMustbeValueType(typeof(TOperand).Name)); } if (typeof(TOperand).IsEnum) { metadata.AddValidationError(SR.TargetTypeCannotBeEnum(this.GetType().Name, this.DisplayName)); } if (string.IsNullOrEmpty(this.FieldName)) { metadata.AddValidationError(SR.ActivityPropertyMustBeSet("FieldName", this.DisplayName)); } else { this.fieldInfo = typeof(TOperand).GetField(this.FieldName); isRequired = this.fieldInfo != null && !this.fieldInfo.IsStatic; if (this.fieldInfo == null) { metadata.AddValidationError(SR.MemberNotFound(this.FieldName, typeof(TOperand).Name)); } else if (this.fieldInfo.IsInitOnly) { metadata.AddValidationError(SR.MemberIsReadOnly(this.FieldName, typeof(TOperand).Name)); } } MemberExpressionHelper.AddOperandLocationArgument <TOperand>(metadata, this.OperandLocation, isRequired); }
protected override void CacheMetadata(CodeActivityMetadata metadata) { MethodInfo oldGetMethod = this.getMethod; MethodInfo oldSetMethod = this.setMethod; if (!typeof(TOperand).IsValueType) { metadata.AddValidationError(SR.TypeMustbeValueType(typeof(TOperand).Name)); } if (typeof(TOperand).IsEnum) { metadata.AddValidationError(SR.TargetTypeCannotBeEnum(this.GetType().Name, this.DisplayName)); } else if (String.IsNullOrEmpty(this.PropertyName)) { metadata.AddValidationError(SR.ActivityPropertyMustBeSet("PropertyName", this.DisplayName)); } else { this.propertyInfo = typeof(TOperand).GetProperty(this.PropertyName); if (this.propertyInfo == null) { metadata.AddValidationError(SR.MemberNotFound(PropertyName, typeof(TOperand).Name)); } } bool isRequired = false; if (this.propertyInfo != null) { this.setMethod = this.propertyInfo.GetSetMethod(); this.getMethod = this.propertyInfo.GetGetMethod(); if (setMethod == null) { metadata.AddValidationError(SR.MemberIsReadOnly(propertyInfo.Name, typeof(TOperand))); } if (setMethod != null && !setMethod.IsStatic) { isRequired = true; } } MemberExpressionHelper.AddOperandLocationArgument <TOperand>(metadata, this.OperandLocation, isRequired); if (this.propertyInfo != null) { if (MethodCallExpressionHelper.NeedRetrieve(this.getMethod, oldGetMethod, this.getFunc)) { this.getFunc = MethodCallExpressionHelper.GetFunc(metadata, this.getMethod, funcCache, locker); } if (MethodCallExpressionHelper.NeedRetrieve(this.setMethod, oldSetMethod, this.setFunc)) { this.setFunc = MethodCallExpressionHelper.GetFunc(metadata, this.setMethod, funcCache, locker, true); } } }
protected override void CacheMetadata(CodeActivityMetadata metadata) { if (!typeof(TOperand).IsValueType) { metadata.AddValidationError(System.Activities.SR.TypeMustbeValueType(typeof(TOperand).Name)); } if (typeof(TOperand).IsEnum) { metadata.AddValidationError(System.Activities.SR.TargetTypeCannotBeEnum(base.GetType().Name, base.DisplayName)); } else if (string.IsNullOrEmpty(this.PropertyName)) { metadata.AddValidationError(System.Activities.SR.ActivityPropertyMustBeSet("PropertyName", base.DisplayName)); } else { this.propertyInfo = typeof(TOperand).GetProperty(this.PropertyName); if (this.propertyInfo == null) { metadata.AddValidationError(System.Activities.SR.MemberNotFound(this.PropertyName, typeof(TOperand).Name)); } } bool isRequired = false; if (this.propertyInfo != null) { MethodInfo setMethod = this.propertyInfo.GetSetMethod(); if (setMethod == null) { metadata.AddValidationError(System.Activities.SR.MemberIsReadOnly(this.propertyInfo.Name, typeof(TOperand))); } if ((setMethod != null) && !setMethod.IsStatic) { isRequired = true; } } MemberExpressionHelper.AddOperandLocationArgument <TOperand>(metadata, this.OperandLocation, isRequired); }