public Parameters(ParameterInfo[] parameterInfos, GeneralGetterManager generalGetterManager, GeneralSetterManager generalSetterManager) { this.generalGetterManager = generalGetterManager; length = parameterInfos.Length; typeMasks = new JsValueType[parameterInfos.Length]; types = new Type[parameterInfos.Length]; args = new object[parameterInfos.Length]; argsTranslateFuncs = new GeneralGetter[parameterInfos.Length]; byRefValueSetFuncs = new GeneralSetter[parameterInfos.Length]; byRef = new bool[parameterInfos.Length]; isOut = new bool[parameterInfos.Length]; for (int i = 0; i < parameterInfos.Length; i++) { var parameterInfo = parameterInfos[i]; var parameterType = parameterInfo.ParameterType; if (parameterInfo.IsDefined(typeof(ParamArrayAttribute), false)) { parameterType = parameterType.GetElementType(); hasParamArray = true; } types[i] = parameterType; typeMasks[i] = GeneralGetterManager.GetJsTypeMask(parameterType); argsTranslateFuncs[i] = generalGetterManager.GetTranslateFunc(parameterType); byRef[i] = parameterType.IsByRef; if (parameterType.IsByRef) { byRefValueSetFuncs[i] = generalSetterManager.GetTranslateFunc(parameterType.GetElementType()); } isOut[i] = parameterType.IsByRef && parameterInfo.IsOut && !parameterInfo.IsIn; } }
public DelegateConstructWrap(Type delegateType, GeneralGetterManager generalGetterManager) { this.delegateType = delegateType; translateFunc = generalGetterManager.GetTranslateFunc(delegateType); }