void EqualDependencyPropertyField() { var method = typeDefinition.GetStaticConstructor(); var nameProperty = propertyDefinition.Name; var typeProperty = propertyDefinition.PropertyType; var callTypeOf = moduleDefinition.GetMethodReference("System.Type", "GetTypeFromHandle"); var callCreate = xamarinAssembly.GetMethodReference("Xamarin.Forms.BindableProperty", "Create", 10); method.Body.Instructions.RemoveAt(method.Body.Instructions.Count - 1); var processor = method.Body.GetILProcessor(); processor.Emit(OpCodes.Ldstr, nameProperty); processor.Emit(OpCodes.Ldtoken, typeProperty); processor.Emit(OpCodes.Call, callTypeOf); processor.Emit(OpCodes.Ldtoken, typeDefinition); processor.Emit(OpCodes.Call, callTypeOf); processor.Emit(OpCodes.Ldnull); processor.Emit(OpCodes.Ldc_I4_2); processor.Emit(OpCodes.Ldnull); processor.Emit(OpCodes.Ldnull); processor.Emit(OpCodes.Ldnull); processor.Emit(OpCodes.Ldnull); processor.Emit(OpCodes.Ldnull); processor.Emit(OpCodes.Call, callCreate); processor.Emit(OpCodes.Stsfld, dependencyPropertyField); processor.Emit(OpCodes.Ret); }
void EqualDependencyPropertyField() { var method = typeDefinition.GetStaticConstructor(); var nameProperty = propertyDefinition.Name; var typeProperty = propertyDefinition.PropertyType; var callTypeOf = moduleDefinition.GetMethodReference("System.Type", "GetTypeFromHandle"); var callRegister = baseAssembly.GetMethodReference("System.Windows.DependencyProperty", "Register", 3); method.Body.Instructions.RemoveAt(method.Body.Instructions.Count - 1); var processor = method.Body.GetILProcessor(); processor.Emit(OpCodes.Ldstr, nameProperty); processor.Emit(OpCodes.Ldtoken, typeProperty); processor.Emit(OpCodes.Call, callTypeOf); processor.Emit(OpCodes.Ldtoken, typeDefinition); processor.Emit(OpCodes.Call, callTypeOf); processor.Emit(OpCodes.Call, callRegister); processor.Emit(OpCodes.Stsfld, dependencyPropertyField); processor.Emit(OpCodes.Ret); }
void EqualBindingContext() { var method = typeDefinition.GetConstructors().First(); var callPut_BindingContext = xamarinAssembly.GetMethodReference("Xamarin.Forms.BindableObject", "set_BindingContext"); method.Body.Instructions.RemoveAt(method.Body.Instructions.Count - 1); var processor = method.Body.GetILProcessor(); processor.Emit(OpCodes.Nop); processor.Emit(OpCodes.Ldarg_0); processor.Emit(OpCodes.Ldarg_0); processor.Emit(OpCodes.Call, callPut_BindingContext); processor.Emit(OpCodes.Nop); processor.Emit(OpCodes.Ret); }