From c54c8b8e7e369dbba890efdb35a015740d1d95ea Mon Sep 17 00:00:00 2001 From: jpbruyere Date: Tue, 2 Jun 2015 12:28:36 +0200 Subject: listbox update --- src/CompilerServices/CompilerServices.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/CompilerServices') diff --git a/src/CompilerServices/CompilerServices.cs b/src/CompilerServices/CompilerServices.cs index 36c88030..f8bbcdf0 100644 --- a/src/CompilerServices/CompilerServices.cs +++ b/src/CompilerServices/CompilerServices.cs @@ -237,8 +237,18 @@ namespace go if (!srcValueType.IsValueType) il.Emit(OpCodes.Castclass, srcValueType); - il.Emit(OpCodes.Callvirt, miToStr); + if (piTarget.PropertyType == typeof(string)) + il.Emit(OpCodes.Callvirt, miToStr); il.Emit(OpCodes.Callvirt, piTarget.GetSetMethod()); + + //initialize target with actual value + if (miSrc.MemberType == MemberTypes.Property) + piTarget.GetSetMethod().Invoke(binding.Source, new object[] { (miSrc as PropertyInfo).GetGetMethod().Invoke(_source,null)}); + else if (miSrc.MemberType == MemberTypes.Field){ + MethodInfo miSetTarget = piTarget.GetSetMethod(); + FieldInfo fiSource = miSrc as FieldInfo; + miSetTarget.Invoke(binding.Source, new object[] { fiSource.GetValue(_source)}); + } } il.MarkLabel(labFailed); il.Emit(OpCodes.Ret); -- cgit v1.3.1-4-g156e