internal DynamicMetaObject Invoke() { _keywordArgNames = _callInfo.ArgumentNames.ToArray(); _totalExplicitArgs = _args.Length; Type[] marshalArgTypes = new Type[_args.Length]; // We already tested the instance, so no need to test it again for (int i = 0; i < _args.Length; i++) { DynamicMetaObject curMo = _args[i]; _restrictions = _restrictions.Merge(ComBinderHelpers.GetTypeRestrictionForDynamicMetaObject(curMo)); marshalArgTypes[i] = MarshalType(curMo, _isByRef[i]); } _varEnumSelector = new VarEnumSelector(marshalArgTypes); return(new DynamicMetaObject( CreateScope(MakeIDispatchInvokeTarget()), BindingRestrictions.Combine(_args).Merge(_restrictions) )); }
internal DynamicMetaObject Invoke() { _keywordArgNames = _callInfo.ArgumentNames.ToArray(); _totalExplicitArgs = _args.Length; Type[] marshalArgTypes = new Type[_args.Length]; // We already tested the instance, so no need to test it again for (int i = 0; i < _args.Length; i++) { DynamicMetaObject curMo = _args[i]; _restrictions = _restrictions.Merge(ComBinderHelpers.GetTypeRestrictionForDynamicMetaObject(curMo)); marshalArgTypes[i] = MarshalType(curMo, _isByRef[i]); } _varEnumSelector = new VarEnumSelector(marshalArgTypes); return new DynamicMetaObject( CreateScope(MakeIDispatchInvokeTarget()), BindingRestrictions.Combine(_args).Merge(_restrictions) ); }
/// <summary> /// Determine .net type for the given type descriptor. /// </summary> /// <param name="typedesc">COM type descriptor to convert.</param> /// <returns>Type represented by the typedesc.</returns> internal static Type GetTypeFromTypeDesc(COM.TYPEDESC typedesc) { VarEnum vt = (VarEnum)typedesc.vt; return(VarEnumSelector.GetTypeForVarEnum(vt)); }