public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { if (!entry.Expression.Contains(",")) { throw new ArgumentException("Must include two numbers separated by a comma."); } else { // get two numbers string[] numbers = entry.Expression.Split(','); if (numbers.Length != 2) { throw new ArgumentException("Only include two numbers"); } else { int lowerLimit, upperLimit; if (Int32.TryParse(numbers[0], out lowerLimit) && Int32.TryParse(numbers[1], out upperLimit)) { CodeTypeReferenceExpression typeRef = new CodeTypeReferenceExpression(this.GetType()); CodeExpression[] methodParameters = new CodeExpression[2]; methodParameters[0] = new CodePrimitiveExpression(lowerLimit); methodParameters[1] = new CodePrimitiveExpression(upperLimit); return new CodeMethodInvokeExpression(typeRef, "GetRandomNumber", methodParameters); } else { throw new ArgumentException("Use valid Integers"); } } } }
public override object EvaluateExpression(object target, BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { var fields = parsedData as ResourceExpressionFields; EnsureResourceProviderFactory(); IResourceProvider provider = _resourceProviderFactory.CreateGlobalResourceProvider(fields.ClassKey); return provider.GetObject(fields.ResourceKey, null); }
private void AddBoundProperty(BoundPropertyEntry entry) { this.AddEntry(this.BoundPropertyEntriesInternal, entry); if (entry.TwoWayBound) { this.flags[0x400] = true; } }
public override object EvaluateExpression(object target, BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { if (target is Control) { return GetRouteValue(context.TemplateControl.Page, entry.Expression.Trim(), entry.ControlType, entry.Name); } return null; }
public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { if ((entry.DeclaringType == null) || (entry.PropertyInfo == null)) { return new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(base.GetType()), "GetAppSetting", new CodeExpression[] { new CodePrimitiveExpression(entry.Expression.Trim()) }); } return new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(base.GetType()), "GetAppSetting", new CodeExpression[] { new CodePrimitiveExpression(entry.Expression.Trim()), new CodeTypeOfExpression(entry.DeclaringType), new CodePrimitiveExpression(entry.PropertyInfo.Name) }); }
/// <summary> /// Gets the code expression. /// </summary> /// <param name="entry"> /// The entry. /// </param> /// <param name="parsedData"> /// The parsed data. /// </param> /// <param name="context"> /// The context. /// </param> /// <returns> /// A CodeExpression. /// </returns> public override CodeExpression GetCodeExpression( BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { var typeName = BeforeLast(entry.Expression, "."); var propertyName = AfterLast(entry.Expression, "."); return new CodePrimitiveExpression(PropertyLength(typeName, propertyName)); }
public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { return new CodeMethodInvokeExpression( new CodeTypeReferenceExpression(this.GetType()), "GetRouteUrl", new CodeThisReferenceExpression(), new CodePrimitiveExpression(entry.Expression.Trim())); }
public override CodeExpression GetCodeExpression( BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { CodeMethodInvokeExpression ex = new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(typeof(ResourceReader)), "GetVal", new CodePrimitiveExpression(entry.Expression.ToString().Trim())); return ex; }
public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { string property = (string) parsedData; CodePrimitiveExpression prim = new CodePrimitiveExpression(property); CodeExpression[] args = new[] {prim}; CodeTypeReferenceExpression refType = new CodeTypeReferenceExpression(this.GetType()); return new CodeMethodInvokeExpression(refType, "GetProperty", args); }
public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { ResourceExpressionFields fields = (ResourceExpressionFields) parsedData; if (fields.ClassKey.Length == 0) { return this.GetPageResCodeExpression(fields.ResourceKey, entry); } return this.GetAppResCodeExpression(fields.ClassKey, fields.ResourceKey, entry); }
public override object EvaluateExpression(object target, BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { // Target should always be a control Control control = target as Control; if (control == null) return null; return GetRouteValue(context.TemplateControl.Page, entry.Expression.Trim(), entry.ControlType, entry.Name); }
public override object EvaluateExpression(object target, BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { ResourceExpressionFields fields = (ResourceExpressionFields) parsedData; IResourceProvider resourceProvider = GetResourceProvider(fields, context.VirtualPathObject); if (entry.Type == typeof(string)) { return GetResourceObject(resourceProvider, fields.ResourceKey, null); } return GetResourceObject(resourceProvider, fields.ResourceKey, null, entry.DeclaringType, entry.PropertyInfo.Name); }
// This method is used only from within pages that aren't compiled public override object EvaluateExpression (object target, BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { if (entry == null) throw new NullReferenceException (".NET emulation (entry == null)"); if (context == null) throw new NullReferenceException (".NET emulation (context == null)"); return GetRouteUrl (context.TemplateControl, entry.Expression); }
public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { Pair pair = (Pair) parsedData; string first = (string) pair.First; if ((bool) pair.Second) { return new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(base.GetType()), "GetConnectionString", new CodeExpression[] { new CodePrimitiveExpression(first) }); } return new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(base.GetType()), "GetConnectionStringProviderName", new CodeExpression[] { new CodePrimitiveExpression(first) }); }
/// <summary> /// Returns a code expression to evaluate during page execution. /// </summary> /// <param name="entry">The property name of the object.</param> /// <param name="parsedData">The parsed value of the expression.</param> /// <param name="context">Properties for the control or page.</param> /// <returns>A CodeExpression that invokes a method.</returns> public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { var lsr = (LocaleStringResource)parsedData; var ex = new CodeMethodInvokeExpression( new CodeTypeReferenceExpression(base.GetType()), "GetVal", new CodePrimitiveExpression(lsr.ResourceName) ); return ex; }
public override CodeExpression GetCodeExpression (BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { Pair connString = parsedData as Pair; return new CodeMethodInvokeExpression ( new CodeTypeReferenceExpression (typeof (ConnectionStringsExpressionBuilder)), (bool)connString.Second ? "GetConnectionStringProviderName" : "GetConnectionString", new CodeExpression [] {new CodePrimitiveExpression (connString.First)} ); }
public override CodeExpression GetCodeExpression (BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { Type type = entry.DeclaringType; PropertyDescriptor descriptor = TypeDescriptor.GetProperties(type)[entry.PropertyInfo.Name]; CodeExpression[] expressionArray = new CodeExpression[3]; expressionArray[0] = new CodePrimitiveExpression(entry.Expression.Trim()); expressionArray[1] = new CodeTypeOfExpression(entry.Type); expressionArray[2] = new CodePrimitiveExpression(entry.Name); return new CodeCastExpression(descriptor.PropertyType, new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(base.GetType()), "GetAppSetting", expressionArray)); }
/// <summary> /// When overridden in a derived class, returns code that is used during page execution to obtain the evaluated expression. /// </summary> /// <param name="entry">The object that represents information about the property bound to by the expression.</param> /// <param name="parsedData">The object containing parsed data as returned by <see cref="M:System.Web.Compilation.ExpressionBuilder.ParseExpression(System.String,System.Type,System.Web.Compilation.ExpressionBuilderContext)" />.</param> /// <param name="context">Contextual information for the evaluation of the expression.</param> /// <returns> /// A <see cref="T:System.CodeDom.CodeExpression" /> that is used for property assignment. /// </returns> public override CodeExpression GetCodeExpression( BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context ) { // from http://msdn.microsoft.com/en-us/library/system.web.compilation.expressionbuilder.getcodeexpression.aspx Type type1 = entry.DeclaringType; PropertyDescriptor descriptor1 = TypeDescriptor.GetProperties( type1 )[entry.PropertyInfo.Name]; CodeExpression[] expressionArray1 = new CodeExpression[3]; expressionArray1[0] = new CodePrimitiveExpression( entry.Expression.Trim() ); expressionArray1[1] = new CodeTypeOfExpression( type1 ); expressionArray1[2] = new CodePrimitiveExpression( entry.Name ); return new CodeCastExpression( descriptor1.PropertyType, new CodeMethodInvokeExpression( new CodeTypeReferenceExpression( base.GetType() ), "GetEvalData", expressionArray1 ) ); }
internal virtual void BuildExpression(BoundPropertyEntry bpe, ControlBuilder controlBuilder, CodeExpression controlReference, CodeStatementCollection methodStatements, CodeStatementCollection statements, CodeLinePragma linePragma, ref bool hasTempObject) { CodeExpression codeExpression = GetCodeExpression(bpe, bpe.ParsedExpressionData, new ExpressionBuilderContext(controlBuilder.VirtualPath)); CodeDomUtility.CreatePropertySetStatements(methodStatements, statements, controlReference, bpe.Name, bpe.Type, codeExpression, linePragma); }
public override Object EvaluateExpression(Object target, BoundPropertyEntry entry, Object parsedData, ExpressionBuilderContext context) { if (String.IsNullOrWhiteSpace(entry.Expression) == true) { return (base.EvaluateExpression(target, entry, parsedData, context)); } else { return (Convert(GetThemeUrl(entry.Expression), entry.PropertyInfo.PropertyType)); } }
public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, Object parsedData, ExpressionBuilderContext context) { if (String.IsNullOrEmpty(entry.Expression) == true) { return (new CodePrimitiveExpression(String.Empty)); } else { return (new CodeMethodInvokeExpression(new CodeMethodReferenceExpression(new CodeTypeReferenceExpression(this.GetType()), "IsInGroup"), new CodePrimitiveExpression(entry.Expression))); } }
public override object EvaluateExpression(object target, BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { Pair pair = (Pair) parsedData; string first = (string) pair.First; bool second = (bool) pair.Second; ConnectionStringSettings settings1 = ConfigurationManager.ConnectionStrings[first]; if (second) { return GetConnectionString(first); } return GetConnectionStringProviderName(first); }
public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { var inputParams = new CodeExpression[] { new CodePrimitiveExpression(entry.Expression.Trim()), new CodeTypeOfExpression(entry.DeclaringType), new CodePrimitiveExpression(entry.PropertyInfo.Name), new CodePrimitiveExpression(context.VirtualPath) }; return new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(GetType()), "GetLocalizedResource", inputParams); }
///<summary> /// 리소스 파일에서 값을 반환합니다. ///</summary> /// ///<returns> /// 구문 분석한 식과 관련된 <see cref="T:System.Object" />입니다. 구문 분석한 식은 클래스 이름과 리소스 키를 포함합니다. ///</returns> /// ///<param name="target"> /// 식이 포함된 개체입니다. /// </param> ///<param name="entry"> /// 식에 의해 바인딩된 속성에 대한 정보를 나타내는 개체입니다. /// </param> ///<param name="parsedData"> /// <see cref="ParseExpression"/> 메서드에 의해 반환된 구문 분석한 데이터가 들어 있는 개체입니다. ///</param> ///<param name="context"> /// 식을 계산하는 데 필요한 컨텍스트 정보입니다. ///</param> public override object EvaluateExpression(object target, BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { if(IsDebugEnabled) log.Debug("표현식을 평가합니다... target=[{0}], entry=[{1}], parsedData=[{2}], context=[{3}]", target, entry, parsedData, context); var field = parsedData as ExpressionField; Guard.Assert(field != null, "파싱된 정보가 ExpressionField 형식이 아닙니다. parseData=[{0}]", parsedData); return ResourceProvider.GetObject(field.ClassKey, field.ResourceKey); }
public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { var expression = new CodeExpression[3]; expression[0] = new CodePrimitiveExpression(entry.Expression.Trim()); expression[1] = new CodeTypeOfExpression(typeof(string)); expression[2] = new CodePrimitiveExpression(entry.Name); return new CodeCastExpression(typeof(string), new CodeMethodInvokeExpression( new CodeTypeReferenceExpression(GetType()), "GetEvalData", expression)); }
private CodeExpression GetAppResCodeExpression(string classKey, string resourceKey, BoundPropertyEntry entry) { CodeMethodInvokeExpression expression = new CodeMethodInvokeExpression { Method = { TargetObject = new CodeThisReferenceExpression(), MethodName = "GetGlobalResourceObject" } }; expression.Parameters.Add(new CodePrimitiveExpression(classKey)); expression.Parameters.Add(new CodePrimitiveExpression(resourceKey)); if ((entry.Type != typeof(string)) && (entry.Type != null)) { expression.Parameters.Add(new CodeTypeOfExpression(entry.DeclaringType)); expression.Parameters.Add(new CodePrimitiveExpression(entry.PropertyInfo.Name)); } return expression; }
public override CodeExpression GetCodeExpression (BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { if (entry == null) throw new NullReferenceException (".NET emulation (entry == null)"); var ret = new CodeMethodInvokeExpression (); ret.Method = new CodeMethodReferenceExpression (new CodeTypeReferenceExpression (typeof (RouteUrlExpressionBuilder)), "GetRouteUrl"); CodeExpressionCollection parameters = ret.Parameters; parameters.Add (new CodeThisReferenceExpression ()); parameters.Add (new CodePrimitiveExpression (entry.Expression)); return ret; }
public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { Pair p = (Pair)parsedData; string name = (string)p.First; bool connectionString = (bool)p.Second; if (connectionString) { return new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(this.GetType()), "GetConnectionString", new CodePrimitiveExpression(name)); } else { return new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(this.GetType()), "GetConnectionStringProviderName", new CodePrimitiveExpression(name)); } }
public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { // Retrieve our parsed data ResourceExpressionFields fields = (ResourceExpressionFields) parsedData; // If there is no classKey, it's a page-level resource if (fields.ClassKey.Length == 0) { return GetPageResCodeExpression(fields.ResourceKey, entry); } // Otherwise, it's a global resource return GetAppResCodeExpression(fields.ClassKey, fields.ResourceKey, entry); }
public override object EvaluateExpression(object target, BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { Pair p = (Pair)parsedData; string name = (string)p.First; bool connectionString = (bool)p.Second; ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings[name]; if (connectionString) { return GetConnectionString(name); } else { return GetConnectionStringProviderName(name); } }
public override CodeExpression GetCodeExpression(System.Web.UI.BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { try { CodeExpression[] inputParams = new CodeExpression[] { new CodePrimitiveExpression(entry.Expression.Trim()), new CodeTypeOfExpression(entry.DeclaringType), new CodePrimitiveExpression(entry.PropertyInfo.Name) }; // Return a CodeMethodInvokeExpression that will invoke the GetRequestedValue method using the specified input parameters return(new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(this.GetType()), "GetRequestedValue", inputParams)); } catch (System.Exception ex) { NttDataWA.UIManager.AdministrationManager.DiagnosticError(ex); return(null); } }
public override CodeExpression GetCodeExpression(System.Web.UI.BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { if (!entry.Expression.Contains(",")) { throw new ArgumentException( "Must include two numbers separated by a comma."); } else { // Get the two numbers. string[] numbers = entry.Expression.Split(','); if (numbers.Length != 2) { throw new ArgumentException("Only include two numbers."); } else { int lowerLimit, upperLimit; if (Int32.TryParse(numbers[0], out lowerLimit) && Int32.TryParse(numbers[1], out upperLimit)) { // Get a reference to the class that has the // GetRandomNumber() method. // (It's the class where this code is executing.) CodeTypeReferenceExpression typeRef = new CodeTypeReferenceExpression(this.GetType()); CodeExpression[] methodParameters = new CodeExpression[2]; methodParameters[0] = new CodePrimitiveExpression(lowerLimit); methodParameters[1] = new CodePrimitiveExpression(upperLimit); return(new CodeMethodInvokeExpression(typeRef, "GetRandomNumber", methodParameters)); } else { throw new ArgumentException("Use valid integers."); } } } }
public override System.CodeDom.CodeExpression GetCodeExpression(System.Web.UI.BoundPropertyEntry entry, object parsedData, System.Web.Compilation.ExpressionBuilderContext context) { CodeExpression[] expressionArray = new CodeExpression[0]; expressionArray[0] = new CodePrimitiveExpression(entry.Expression.Trim()); return(new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(base.GetType()), "GetEvalData", expressionArray)); }
public override object EvaluateExpression(object target, System.Web.UI.BoundPropertyEntry entry, object parsedData, System.Web.Compilation.ExpressionBuilderContext context) { return(GetEvalData(entry.Expression)); }
public override System.CodeDom.CodeExpression GetCodeExpression(System.Web.UI.BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context) { return(new CodePrimitiveExpression(entry.Expression.Trim())); }