public override object Invoke( object[] row ) { object[] methodParameters = isPerfectMatch ? row : PrepareParameters(row); object result = invoker.Invoke(methodParameters); if (!isPerfectMatch && AnySet(parameterReflectionMask)) UpdateMembers(result, row); return result; }
/// <summary> /// Create a new empty instance of the same type of OperationHost as this one /// </summary> /// <returns></returns> public OperationHost <TOp> CreateNew() { if (_ctorDlg == null) { _ctorDlg = GetType().DelegateForCreateInstance(); } var res = _ctorDlg.Invoke(); if (res is OperationHost <TOp> ophost) { return(ophost); } return(null); }
public void TestConstructorWithArgs() { // Arrange var constructorInfo = typeof(Bar).GetConstructor(new[] { typeof(decimal), typeof(string) }); decimal arg1 = 1.11m; string arg2 = "123"; // Act var invoker = new ConstructorInvoker(constructorInfo); var obj = invoker.Invoke(arg1, arg2) as Bar; // Assert Assert.Equal(arg1, obj.DecimalProp); Assert.Equal(arg2, obj.StringProp); }
/// <summary> /// Initializes a new instance of the <see cref="AttributeFactory" /> class. /// </summary> /// <param name="data">The data.</param> public AttributeFactory(CustomAttributeData data) { Data = data; var ctorInvoker = new ConstructorInvoker(data.Constructor); var ctorArgs = data.ConstructorArguments.Select(a => a.Value).ToArray(); m_attributeCreator = () => ctorInvoker.Invoke(ctorArgs); m_propertySetters = new List <Action <object> >(); foreach (var arg in data.NamedArguments) { var property = (PropertyInfo)arg.MemberInfo; var propertyAccessor = new PropertyAccessor(property); var value = arg.TypedValue.Value; m_propertySetters.Add(o => propertyAccessor.SetValue(o, value)); } }
public AttributeFactory(CustomAttributeData data) { this.Data = data; var ctorInvoker = new ConstructorInvoker(data.Constructor); var ctorArgs = data.ConstructorArguments.Select(a => a.Value).ToArray(); this.m_attributeCreator = () => ctorInvoker.Invoke(ctorArgs); this.m_propertySetters = new List<Action<object>>(); foreach (var arg in data.NamedArguments) { var property = (PropertyInfo)arg.MemberInfo; var propertyAccessor = new PropertyAccessor(property); var value = arg.TypedValue.Value; this.m_propertySetters.Add(o => propertyAccessor.SetValue(o, value)); } }