public RunTimeArrayAccessReferenceListAccess(Type t, string identifer, object target, object accessor, Type targetType) : base(t, identifer, target, accessor, targetType)
 {
     _accessor   = accessor;
     _type       = t;
     _targetType = targetType;
     _elemType   = (t != typeof(object)) ? ArrayUtility.GetElementType(t) : typeof(object);
 }
Exemplo n.º 2
0
        protected virtual object CreateIntAccessorReference(object output, object accessor)
        {
            if (output as RunTimeReference != null)
            {
                RunTimeReference reference = output as RunTimeReference;
                object           target    = reference.CreateGetFunction(_cdata);

                if (reference.type == null || reference.type == typeof(object))
                {
                    output = new RunTimeArrayAccessReference(typeof(object), reference.identifer, target, accessor, typeof(object));
                }
                else
                {
                    output = new RunTimeArrayAccessReference(ArrayUtility.GetElementType(reference.type), reference.identifer, target, accessor, reference.targetType);
                }
            }
            else if (output as FunctionCall != null || output as MethodCall != null || output as CompileTimeArrayAccessReference != null)
            {
                Reference reference = output as Reference;
                object    target    = reference.CreateGetFunction(_cdata);
                if (reference.type == null || reference.type == typeof(object))
                {
                    output = new RunTimeArrayAccessReference(typeof(object), reference.identifer, target, accessor, typeof(object));
                }
                else
                {
                    output = new RunTimeArrayAccessReference(ArrayUtility.GetElementType(reference.type), reference.identifer, target, accessor, reference.type);
                }
            }
            else if (output as CompileTimeReference != null)
            {
                CompileTimeReference reference = output as CompileTimeReference;

                if (reference.type == null || reference.type == typeof(object))
                {
                    output = new CompileTimeArrayAccessReference(typeof(object), reference.identifer, reference.environmentIndex, accessor);
                }
                else
                {
                    output = new CompileTimeArrayAccessReference(ArrayUtility.GetElementType(reference.type), reference.identifer, reference.environmentIndex, accessor);
                }
            }
            return(output);
        }
 public CompileTimeArrayAccessReferenceListAccess(Type t, string identifer, int envIndex, object accessor) : base(t, identifer, envIndex, accessor)
 {
     _accessor = accessor;
     _elemType = (t != typeof(object)) ? ArrayUtility.GetElementType(t) : typeof(object);
 }