Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ WrapArgsForInvokeCall()

static void System.RuntimeType.WrapArgsForInvokeCall ( object[] aArgs,
int[] aArgsWrapperTypes )
inlinestaticprivate

Definition at line 3306 of file RuntimeType.cs.

3307 {
3308 int num = aArgs.Length;
3309 for (int i = 0; i < num; i++)
3310 {
3311 if (aArgsWrapperTypes[i] == 0)
3312 {
3313 continue;
3314 }
3315 if (((DispatchWrapperType)aArgsWrapperTypes[i]).HasFlag(DispatchWrapperType.SafeArray))
3316 {
3317 Type type = null;
3318 bool flag = false;
3319 switch ((DispatchWrapperType)(aArgsWrapperTypes[i] & -65537))
3320 {
3321 case DispatchWrapperType.Unknown:
3323 break;
3324 case DispatchWrapperType.Dispatch:
3326 break;
3327 case DispatchWrapperType.Error:
3329 break;
3330 case DispatchWrapperType.Currency:
3332 break;
3333 case DispatchWrapperType.BStr:
3335 flag = true;
3336 break;
3337 }
3338 Array array = (Array)aArgs[i];
3339 int length = array.Length;
3340 object[] array2 = (object[])Array.CreateInstance(type, length);
3341 ConstructorInfo constructorInfo = ((!flag) ? type.GetConstructor(new Type[1] { typeof(object) }) : type.GetConstructor(new Type[1] { typeof(string) }));
3342 for (int j = 0; j < length; j++)
3343 {
3344 if (flag)
3345 {
3346 array2[j] = constructorInfo.Invoke(new object[1] { (string)array.GetValue(j) });
3347 }
3348 else
3349 {
3350 array2[j] = constructorInfo.Invoke(new object[1] { array.GetValue(j) });
3351 }
3352 }
3353 aArgs[i] = array2;
3354 }
3355 else
3356 {
3358 {
3359 case DispatchWrapperType.Unknown:
3360 aArgs[i] = new UnknownWrapper(aArgs[i]);
3361 break;
3362 case DispatchWrapperType.Dispatch:
3363 aArgs[i] = new DispatchWrapper(aArgs[i]);
3364 break;
3365 case DispatchWrapperType.Error:
3366 aArgs[i] = new ErrorWrapper(aArgs[i]);
3367 break;
3368 case DispatchWrapperType.Currency:
3369 aArgs[i] = new CurrencyWrapper(aArgs[i]);
3370 break;
3371 case DispatchWrapperType.BStr:
3372 aArgs[i] = new BStrWrapper((string)aArgs[i]);
3373 break;
3374 }
3375 }
3376 }
3377 }
ConstructorInfo? GetConstructor(Type[] types)
Definition Type.cs:542

References System.array, System.Reflection.Array, System.Array.CreateInstance(), System.length, and System.type.

Referenced by System.RuntimeType.ForwardCallToInvokeMember().