private void WriteNotApplicableResult(ILWriter writer, ValidationKind kind) { var notApplicable = KnownMetadata.Methods.ValidationResult_NotApplicable; writer.LoadInt32((int)kind); writer.StaticMethodCall(notApplicable); }
private void WriteFailureResult(ILWriter writer, ValidationKind kind, string message) { var failure = KnownMetadata.Methods.ValidationResult_Failure; writer.LoadInt32((int)kind); writer.LoadString(message); writer.StaticMethodCall(failure); }
private void WriteIsMatch(ILWriter writer, PropertyInfo property, IsMatchForAttribute isMatchAttribute) { var validationKind = ValidationKind.RegularExpressionMatch; var local = writer.DeclareLocal <string>(); if (property.PropertyType == typeof(string)) { writer.LoadFirstParameter(); writer.GetPropertyValue(property); writer.SetLocal(local); } else { var temp = writer.DeclareLocal(property.PropertyType); writer.LoadFirstParameter(); writer.GetPropertyValue(property); writer.SetLocal(temp); writer.LoadLocal(temp); var notNull = writer.IsNotNull(); WriteFailureResult(writer, validationKind, CommonResults.CannotValidateNullProperty.WithValues(property.ReflectedType.Name, property.Name)); writer.Return(); writer.MarkLabel(notNull); writer.LoadLocal(temp); writer.InstanceMethodCall(KnownMetadata.Methods.Object_ToString); writer.SetLocal(local); } writer.LoadLocal(local); writer.LoadString(isMatchAttribute.RegularExpression); writer.StaticMethodCall(KnownMetadata.Methods.Regex_IsMatch); var end = writer.IfFalseThen(); WriteFailureResult(writer, validationKind, CommonResults.RegularExpressionWasNotMatch.WithValues(property.ReflectedType.Name, property.Name)); writer.Return(); writer.MarkLabel(end); }
private void WriteSuccessResult(ILWriter writer) { var success = KnownMetadata.Methods.ValidationResult_Success; writer.StaticMethodCall(success); }