Esempio n. 1
0
        private object TestConstructor(ConstructorInfo constructor)
        {
            ParameterInfo[] parametersInfo = constructor.GetParameters();
            object[]        parameters     = new object[parametersInfo.Length];
            int             i = 0;

            foreach (var parameterInfo in parametersInfo)
            {
                parameters[i] = objectCreator.CreateInstance(parameterInfo.ParameterType) ?? CreateInstance(parameterInfo.ParameterType);
                i++;
            }
            try
            {
                object obj = constructor.Invoke(parameters);
                return(obj);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return(null);
            }
        }
        public object Generate(Type type)
        {
            if (!PossibleTypes.Contains(type.GetGenericTypeDefinition()))
            {
                throw new ArgumentException();
            }

            ConstructorInfo constructor = type.GetConstructor(new Type[] { typeof(IEnumerable <>).MakeGenericType(type.GenericTypeArguments) });

            object[] args = new[] { _objCreator.CreateInstance(type.GenericTypeArguments[0].MakeArrayType()) };

            return(constructor.Invoke(args));
        }
Esempio n. 3
0
        private void FillArray(Array array, int count = 0, int[] elementId = null)
        {
            elementId = elementId ?? new int[array.Rank];

            for (int i = 0; i < array.GetLength(count); i++)
            {
                elementId[count] = i;

                if (count == array.Rank - 1)
                {
                    array.SetValue(_objCreator.CreateInstance(array.GetType().GetElementType()), elementId);
                }
                else
                {
                    FillArray(array, count + 1, elementId);
                }
            }
        }