Просмотр исходного кода

2005-03-18 Gonzalo Paniagua Javier <[email protected]>

	* TemplateControlCompiler.cs: make typedesc.aspx work again.


svn path=/trunk/mcs/; revision=42005
Gonzalo Paniagua Javier 21 лет назад
Родитель
Сommit
8cfab754a0

+ 4 - 0
mcs/class/System.Web/System.Web.Compilation/ChangeLog

@@ -1,3 +1,7 @@
+2005-03-18 Gonzalo Paniagua Javier <[email protected]>
+
+	* TemplateControlCompiler.cs: make typedesc.aspx work again.
+
 2005-02-17 Gonzalo Paniagua Javier <[email protected]>
 
 	* ExpressionBuilderContext.cs:

+ 12 - 6
mcs/class/System.Web/System.Web.Compilation/TemplateControlCompiler.cs

@@ -991,19 +991,25 @@ namespace System.Web.Compilation
 				converter = TypeDescriptor.GetConverter (type);
 			}
 			
-			if (converter != null && converter.CanConvertFrom (typeof (string)))
-			{
+			if (converter != null && converter.CanConvertFrom (typeof (string))) {
 				object value = converter.ConvertFrom (str);
 
 				if (converter.CanConvertTo (typeof (InstanceDescriptor))) {
 					InstanceDescriptor idesc = (InstanceDescriptor) converter.ConvertTo (value, typeof(InstanceDescriptor));
 					return GenerateInstance (idesc);
 				}
+
+				CodeMethodReferenceExpression m = new CodeMethodReferenceExpression ();
+				m.TargetObject = new CodeTypeReferenceExpression (typeof (TypeDescriptor));
+				m.MethodName = "GetConverter";
+				CodeMethodInvokeExpression invoke = new CodeMethodInvokeExpression (m);
+				CodeTypeReference tref = new CodeTypeReference (type);
+				invoke.Parameters.Add (new CodeTypeOfExpression (tref));
 				
-				InstanceDescriptor desc = GetDefaultInstanceDescriptor (value);
-				if (desc != null) return GenerateInstance (desc);
-				
-				return GenerateObjectInstance (value);
+				invoke = new CodeMethodInvokeExpression (invoke, "ConvertFrom");
+				invoke.Parameters.Add (new CodePrimitiveExpression (str));
+
+				return new CodeCastExpression (tref, invoke);
 			}
 			
 			Console.WriteLine ("Unknown type: " + type + " value: " + str);