public object this[int index] { get { return(engine.PrepareResult(list[index], elementType, ScriptMemberFlags.None, true)); } set { list[index] = value; } }
public override bool TryInvokeAuxMember(ScriptEngine engine, string name, BindingFlags invokeFlags, object[] args, object[] bindArgs, out object result) { const BindingFlags getPropertyFlags = BindingFlags.GetField | BindingFlags.GetProperty; const BindingFlags setPropertyFlags = BindingFlags.SetProperty | BindingFlags.PutDispProperty | BindingFlags.PutRefDispProperty; if (name == "out") { if ((invokeFlags & getPropertyFlags) != 0) { result = new OutArg <T>(this); return(true); } } else if (name == "ref") { if ((invokeFlags & getPropertyFlags) != 0) { result = new RefArg <T>(this); return(true); } } else if (name == "value") { if (invokeFlags.HasFlag(BindingFlags.InvokeMethod)) { if (InvokeHelpers.TryInvokeObject(engine, value, invokeFlags, args, bindArgs, typeof(IDynamicMetaObjectProvider).IsAssignableFrom(typeof(T)), out result)) { return(true); } if (invokeFlags.HasFlag(BindingFlags.GetField) && (args.Length < 1)) { result = engine.PrepareResult(value, true); return(true); } result = null; return(false); } if ((invokeFlags & getPropertyFlags) != 0) { result = engine.PrepareResult(value, true); return(true); } if ((invokeFlags & setPropertyFlags) != 0) { if (args.Length == 1) { result = engine.PrepareResult(((IHostVariable)this).Value = args[0], typeof(T), true); return(true); } } } result = null; return(false); }