|
|
|
@ -129,7 +129,7 @@ namespace ICSharpCode.PythonBinding |
|
|
|
/// </summary>
|
|
|
|
/// </summary>
|
|
|
|
object Deserialize(NameExpression nameExpression) |
|
|
|
object Deserialize(NameExpression nameExpression) |
|
|
|
{ |
|
|
|
{ |
|
|
|
string name = nameExpression.Name.ToString(); |
|
|
|
string name = nameExpression.Name; |
|
|
|
if ("self" == name.ToLowerInvariant()) { |
|
|
|
if ("self" == name.ToLowerInvariant()) { |
|
|
|
return componentCreator.RootComponent; |
|
|
|
return componentCreator.RootComponent; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
@ -157,8 +157,8 @@ namespace ICSharpCode.PythonBinding |
|
|
|
ListExpression list = callExpression.Args[0].Expression as ListExpression; |
|
|
|
ListExpression list = callExpression.Args[0].Expression as ListExpression; |
|
|
|
MemberExpression arrayTypeMemberExpression = target.Index as MemberExpression; |
|
|
|
MemberExpression arrayTypeMemberExpression = target.Index as MemberExpression; |
|
|
|
Type arrayType = componentCreator.GetType(PythonControlFieldExpression.GetMemberName(arrayTypeMemberExpression)); |
|
|
|
Type arrayType = componentCreator.GetType(PythonControlFieldExpression.GetMemberName(arrayTypeMemberExpression)); |
|
|
|
Array array = Array.CreateInstance(arrayType, list.Items.Length); |
|
|
|
Array array = Array.CreateInstance(arrayType, list.Items.Count); |
|
|
|
for (int i = 0; i < list.Items.Length; ++i) { |
|
|
|
for (int i = 0; i < list.Items.Count; ++i) { |
|
|
|
Expression listItemExpression = list.Items[i]; |
|
|
|
Expression listItemExpression = list.Items[i]; |
|
|
|
ConstantExpression constantExpression = listItemExpression as ConstantExpression; |
|
|
|
ConstantExpression constantExpression = listItemExpression as ConstantExpression; |
|
|
|
MemberExpression memberExpression = listItemExpression as MemberExpression; |
|
|
|
MemberExpression memberExpression = listItemExpression as MemberExpression; |
|
|
|
@ -167,10 +167,10 @@ namespace ICSharpCode.PythonBinding |
|
|
|
if (constantExpression != null) { |
|
|
|
if (constantExpression != null) { |
|
|
|
array.SetValue(constantExpression.Value, i); |
|
|
|
array.SetValue(constantExpression.Value, i); |
|
|
|
} else if (memberExpression != null) { |
|
|
|
} else if (memberExpression != null) { |
|
|
|
string name = PythonControlFieldExpression.GetVariableName(memberExpression.Name.ToString()); |
|
|
|
string name = PythonControlFieldExpression.GetVariableName(memberExpression.Name); |
|
|
|
array.SetValue(componentCreator.GetComponent(name), i); |
|
|
|
array.SetValue(componentCreator.GetComponent(name), i); |
|
|
|
} else if (nameExpression != null) { |
|
|
|
} else if (nameExpression != null) { |
|
|
|
array.SetValue(componentCreator.GetInstance(nameExpression.Name.ToString()), i); |
|
|
|
array.SetValue(componentCreator.GetInstance(nameExpression.Name), i); |
|
|
|
} else if (listItemCallExpression != null) { |
|
|
|
} else if (listItemCallExpression != null) { |
|
|
|
object instance = componentCreator.CreateInstance(arrayType, GetArguments(listItemCallExpression), null, false); |
|
|
|
object instance = componentCreator.CreateInstance(arrayType, GetArguments(listItemCallExpression), null, false); |
|
|
|
array.SetValue(instance, i); |
|
|
|
array.SetValue(instance, i); |
|
|
|
@ -191,7 +191,7 @@ namespace ICSharpCode.PythonBinding |
|
|
|
if (type != null) { |
|
|
|
if (type != null) { |
|
|
|
foreach (MethodInfo method in type.GetMethods(BindingFlags.Public | BindingFlags.Static)) { |
|
|
|
foreach (MethodInfo method in type.GetMethods(BindingFlags.Public | BindingFlags.Static)) { |
|
|
|
if (method.Name == field.MemberName) { |
|
|
|
if (method.Name == field.MemberName) { |
|
|
|
if (method.GetParameters().Length == callExpression.Args.Length) { |
|
|
|
if (method.GetParameters().Length == callExpression.Args.Count) { |
|
|
|
return method.Invoke(null, GetArguments(callExpression).ToArray()); |
|
|
|
return method.Invoke(null, GetArguments(callExpression).ToArray()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|