public override void SetValue(object obj, object value, BindingFlags invokeAttr, Binder binder, object[] index, CultureInfo culture)
{
MethodInfo setter = this.setter;
JSObject obj2 = obj as JSObject;
if ((setter == null) && (obj2 != null))
{
setter = obj2.GetMethod("set_" + this.name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
JSWrappedMethod method = setter as JSWrappedMethod;
if (method != null)
{
setter = method.method;
}
}
if (setter == null)
{
setter = this.GetSetMethod(false);
}
if (setter != null)
{
if ((index == null) || (index.Length == 0))
{
setter.Invoke(obj, invokeAttr, binder, new object[] { value }, culture);
}
else
{
int length = index.Length;
object[] target = new object[length + 1];
ArrayObject.Copy(index, 0, target, 0, length);
target[length] = value;
setter.Invoke(obj, invokeAttr, binder, target, culture);
}
}
}