Пример #1
0
		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;
		}
Пример #2
0
        /// <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);
        }
Пример #4
0
        /// <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));
            }
        }
Пример #5
0
        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));
            }
        }